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

next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin wrote:
> 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.

I see...  So, what if I want to make some data available to userland? 
Is flipping the user/supervisor bit the only way?

Cheers,
-- 
Xin LI <delphij@delphij.net>	http://www.delphij.net/
FreeBSD - The Power to Serve!



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