table of contents
VM_MAP_STACK(9) | Kernel Developer's Manual | VM_MAP_STACK(9) |
NAME¶
vm_map_stack
, vm_map_growstack
—
SYNOPSIS¶
#include <sys/param.h>
#include <vm/vm.h>
#include <vm/vm_map.h>
int
vm_map_stack
(vm_map_t map,
vm_offset_t addrbos, vm_size_t
max_ssize, vm_prot_t prot,
vm_prot_t max, int cow);
int
vm_map_growstack
(struct
proc *p, vm_offset_t
addr);
DESCRIPTION¶
Thevm_map_stack
() function maps a process stack for a
new process image. The stack is mapped addrbos in
map, with a maximum size of
max_ssize. Copy-on-write flags passed in
cow are also applied to the new mapping. Protection bits
are supplied by prot and max.
It is typically called by execve(2).
The vm_map_growstack
() function is
responsible for growing a stack for the process p to
the desired address addr, similar to the legacy
sbrk(2) call.
IMPLEMENTATION NOTES¶
Thevm_map_stack
() function calls
vm_map_insert(9) to create its mappings.
The vm_map_stack
() and
vm_map_growstack
() functions acquire the process
lock on p for the duration of the call.
RETURN VALUES¶
Thevm_map_stack
() function returns
KERN_SUCCESS
if the mapping was allocated
successfully.
Otherwise, if mapping the stack would exceed the process's VMEM
resource limit, or if the specified bottom-of-stack address is out of range
for the map, or if there is already a mapping at the address which would
result, or if max_ssize could not be accommodated
within the current mapping, KERN_NO_SPACE
is
returned.
Other possible return values for this function are documented in vm_map_insert(9).
The vm_map_growstack
() function returns
KERN_SUCCESS
if addr is
already mapped, or if the stack was grown successfully.
It also returns KERN_SUCCESS
if
addr is outside the stack range; this is done in order
to preserve compatibility with the deprecated grow
()
function previously located in the file
vm_machdep.c.
SEE ALSO¶
vm_map(9), vm_map_insert(9)AUTHORS¶
This manual page was written by Bruce M Simpson <bms@spc.org>.January 11, 2013 | Linux 4.19.0-10-amd64 |