51. VM for Digital Unix¶
Warning
As of 2013-05-26, the MPS is no longer supported on Digital Unix, so this document is only of historical interest.
51.1. Introduction¶
.readership: Any MPS developer.
.intro: This is the design of the VM Module for Digital UNIX (also known as OSF/1 and Tru64 Unix; see os.o1). In general aspects (including interface) the design is as for design.mps.vm.
51.2. Functions¶
.fun.unmap: VMUnmap()
“unmaps” a region by replacing the
existing mapping with a mapping using the vm->none_fd
file
descriptor (see mumble mumble, VMCreate()
), and protection set to
PROT_NONE
(that is, no access).
.fun.unmap.justify: Replacing the mapping in this way means that
the address space is still reserved and will not be used by calls to
mmap()
(perhaps in other libraries) which specify
MAP_VARIABLE
.
.fun.unmap.offset: The offset for this mapping is the offset of the
region being unmapped in the VM; this gives the same effect as if
there was one mapping of the vm->none_fd
from the base to the
limit of the VM (but “behind” all the other mappings that have been
created).
.fun.unmap.offset.justify: If this is not done (if for example the
offset is always specified as 0) then the VM will cause the kernel to
create a new file reference for each mapping created with
VMUnmap()
; eventually the kernel refuses the mmap()
call because it
can’t create a new file reference.