From fc4d1650f3e35a1cff0111ae3808c61d44346f1f Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 20 Dec 2012 22:20:05 +0100 Subject: glibc/mmap: Extend. --- microkernel/mach/external_pager_mechanism.mdwn | 14 +++++++------- microkernel/mach/interface/vm_map.mdwn | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 microkernel/mach/interface/vm_map.mdwn (limited to 'microkernel') diff --git a/microkernel/mach/external_pager_mechanism.mdwn b/microkernel/mach/external_pager_mechanism.mdwn index 05a6cc56..54492b71 100644 --- a/microkernel/mach/external_pager_mechanism.mdwn +++ b/microkernel/mach/external_pager_mechanism.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2002, 2007, 2008, 2010, 2011 Free Software +[[!meta copyright="Copyright © 2002, 2007, 2008, 2010, 2011, 2012 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -23,8 +23,8 @@ latter. In Mach, a [[task]]'s [[virtual_address_space]] consists of references to [[memory_object]]s. -To associate a memory object with a portion of a task's -address space, `vm_map` is invoked on a capability designating +To associate a memory object with a portion of a task's address space, +[[`vm_map`|interface/vm_map]] is invoked on a capability designating the task and passing a reference to the memory object and the offset at which to install it. (The first time a task maps an object, Mach sends an initialization message @@ -69,8 +69,8 @@ it to the port set that it is listening on and returns a capability (a port send right) to the client. (C) The client attempts to map the object into its address space using -the `vm_map` RPC. It passes a reference to the port that the server gave -it to the vm server (typically Mach). +the [[`vm_map`|interface/vm_map]] RPC. It passes a reference to the port that +the server gave it to the vm server (typically Mach). (D) Since Mach has never seen the object before, it queues a `memory_object_init` on the given port along with a send right (the @@ -84,8 +84,8 @@ structures to manage the mapping and then invokes the `memory_object_ready` method on the control object. (F) The kernel sees that the manager is ready, sets up the appropriate -mappings in the client's address space and then replies to the `vm_map` RPC indicating -success. +mappings in the client's address space and then replies to the +[[`vm_map`|interface/vm_map]] RPC indicating success. There is nothing stopping others from playing *the kernel*. This is not a security problem: clients must [[trust]] the server from whom they diff --git a/microkernel/mach/interface/vm_map.mdwn b/microkernel/mach/interface/vm_map.mdwn new file mode 100644 index 00000000..7232209b --- /dev/null +++ b/microkernel/mach/interface/vm_map.mdwn @@ -0,0 +1,16 @@ +[[!meta copyright="Copyright © 2012 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +Used in [[glibc]] for implementing [[glibc/mmap]], brk and sbrk, and *attempt +to map page zero redzoned* (`[glibc]/hurd/hurdstartup.c:_hurd_startup`). + +[[!tag open_issue_glibc open_issue_gnumach]]It has an awkward mention in +`[glibc]/sysdeps/mach/hurd/dl-sysdep.c:fmh`: *XXX loser kludge for vm\_map +kernel bug*. -- cgit v1.2.3