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"