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