Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2009 12:16:02 -0700
From:      Chuck Swiger <cswiger@mac.com>
To:        Scott Long <scottl@samsco.org>
Cc:        Sergey Babkin <babkin@verizon.net>, freebsd-hackers@FreeBSD.org, attilio@FreeBSD.org, phk@phk.freebsd.dk, freebsd-current@FreeBSD.org, Robert Watson <rwatson@FreeBSD.org>, prashant.vaibhav@gmail.com
Subject:   Re: Improving the kernel/i386 timecounter performance	(GSoC	proposal)
Message-ID:  <2C3C7185-CB37-4067-B2A9-A03B5B288606@mac.com>
In-Reply-To: <49CD1B3D.3030103@samsco.org>
References:  <11609492.9579.1238167614335.JavaMail.root@vms070.mailsrvcs.net> <49CD0405.1060704@samsco.org> <alpine.BSF.2.00.0903271821060.60642@fledge.watson.org> <49CD1B3D.3030103@samsco.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi, Scott & all--

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.

I'm not entirely sure how close the Mach/xnu and FreeBSD  
implementations of pmap_* stuff are, but the xnu code for commpage  
stuff is here:

http://www.opensource.apple.com/darwinsource/Current/xnu-1228.9.59/osfmk/i386/pmap.c 
  [pmap_commpage32_init(), pmap_commpage64_init()]
http://www.opensource.apple.com/darwinsource/Current/xnu-1228.9.59/osfmk/i386/commpage/ 
  [all :-)]
http://www.opensource.apple.com/darwinsource/Current/xnu-1228.9.59/osfmk/i386/commpage/commpage_gettimeofday.s 
  [but this one in particular]
http://www.opensource.apple.com/darwinsource/Current/xnu-1228.9.59/osfmk/vm/vm_shared_region.c 
  [cf "COMM PAGE" comments, vm_commpage_init()]
http://www.opensource.apple.com/darwinsource/Current/xnu-1228.9.59/bsd/kern/kern_fork.c 
  [fork_create_child(), procdup(), uses of pmap_map_sharedpage()]

[ ADC login might be needed, otherwise I think rwatson has been  
importing xnu periodically for TrustedBSD or other work, and might be  
able to provide similar pointers... ]

Regards,
-- 
-Chuck




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2C3C7185-CB37-4067-B2A9-A03B5B288606>