Some questions about pager

BERTRAND Joel joel.bertrand at systella.fr
Wed Nov 17 11:50:29 CET 2010


	Hello,

	It's my first post on this mailing list. A long time ago, I have 
started to write a VMS-clone (http://www.freevms.net). This opensourced 
project was sleeping for a long time because monolithic kernel isn't 
good enough to write a clone of this system.

	Thus, I have restarted this project with a L4 microkernel (exactly 
pistachio L4/X2). Now, I have written a roottask that tries to launch 
VMS$INIT, first thread required to boot all system. I have reuse some 
works done for iguana project (and fixed some bugs).

	When VMS$INIT is started, this thread sends two IPC to its pager :

vms$pagefault(addr:1001730, s:8000) [priv=4]
-> default addresse is $1001730 (start address of VMS$INIT thread)
...
vms$pagefault(addr:47fe8, s:2000) [priv=4]

	I'm not sure that I have understand how should work a pager. I have 
uploaded my pager here :

http://www.freevms.net/trac/browser/sources/freevms/vm/vm_pagefault.c

	All sources are available with :

git clone git://rayleigh.systella.fr/FreeVMS.git

and I have uploaded a disk image that runs with qemu (with a x86/64) :

http://www.systella.fr/~bertrand/freevms.img.bz2

	My pager tries to find a physical free page to map virtual memory. I 
think that memory is correctly mapped and I don't understand why pager 
receives other request with same virtual address. I suppose I have done 
a mistake.

	Any idea ?

	Thanks in advance for all explanations,

	JB




More information about the l4-hackers mailing list