How to map a page with userland program?
LI Xin
delphij at delphij.net
Fri Sep 15 10:51:05 PDT 2006
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 at delphij.net> http://www.delphij.net/
FreeBSD - The Power to Serve!
More information about the freebsd-arch
mailing list