Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Sep 2006 12:51:16 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        LI Xin <delphij@delphij.net>
Cc:        freebsd-arch@freebsd.org
Subject:   Re: How to map a page with userland program?
Message-ID:  <200609151251.16371.jhb@freebsd.org>
In-Reply-To: <450AC4FE.6070303@delphij.net>
References:  <450AB80B.1050100@delphij.net> <200609151035.12069.jhb@freebsd.org> <450AC4FE.6070303@delphij.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 15 September 2006 11:21, LI Xin wrote:
> John Baldwin wrote:
> > On Friday 15 September 2006 10:26, LI Xin wrote:
> >> Dear folks,
> >>
> >> Is there a continent and MI way to map a kernel page into userland 
> >> address space under the same virtual address?  It seems that this can be 
> >> implemented through some routines in MD part of pmap, but is it possible 
> >> to use higher level VM routines to do the job?
> > 
> > Not to the same userland virtual address.  Why do you need the same
> > virtual address anyway?  If it's for pointers use offsets relative to
> > the start of the page instead.
> 
> That would make it easier to implement some sort of VSYSCALL, which is 
> in fact executed in userland.  Or, is there any better way? :-)

If you want to stick code in the page, make the code PIC, the same as is done 
for shared libraries.  Alternatively, if you wanted to be very, very evil and 
can have the page read-only once it is initialized, flip the user/supervisor 
bit in the kernel PTE for that page such that it is treated as a user page 
rather than a kernel page (even though it's in KVA), and then userland 
processes can access that page via it's kernel VA.  Making the code PIC would 
probably be better though.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200609151251.16371.jhb>