On Mar 27, 2009, at 11:30 AM, Scott Long wrote:

Robert Watson wrote:
On Fri, 27 Mar 2009, Scott Long wrote:
I've been talking about this for years. All I need is help with the VM magic to create the page on fork. I also want two pages, one global for gettimeofday (and any other global data we can think of) and one per-process for static data like getpid/getgid.
FWIW, there are some variations in schemes across OS's -- one extreme is the Linux approach, which actually exports a mini shared library in ELF format on the shared page, providing implementations of various services (such as entering system calls), time stuff, etc. Less extreme are the shared pages offered on Mac OS X, etc.

Yes, but I'd like to start somewhere, and considering that it's been
impossible in _5_ years to get the 30 minutes of Peter or JeffR or JHB
time to get the basic VM magic done, I'm keeping my expectations as
modest as possible.


You can find a proof-of-concept implementation for amd64 of a global page mapped in every process at http://people.freebsd.org/~ssouhlal/ testing/syspage-20090328.diff .

It exports ticks to userland at VM_MIN_KERNEL_ADDRESS (0xfffffffe40000000).

In order for this to work on architectures without a direct map, the page will need to be mapped a second time as read/write (you might want to have a vm_offset_t pmap_map_syspage(vm_page_t m) function that does the right thing for each architecture).

Unfortunately, this trick probably won't work for per-process pages without more work, because we wouldn't be able to just insert the page in kernel_map.

-- Suleiman
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to