Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

vm_map_stack(9) [freebsd man page]

VM_MAP_STACK(9) 					   BSD Kernel Developer's Manual					   VM_MAP_STACK(9)

NAME
vm_map_stack, vm_map_growstack -- manage process stacks 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
The vm_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
The vm_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
The vm_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>. BSD
January 11, 2013 BSD

Check Out this Related Man Page

VM_MAP_WIRE(9)						   BSD Kernel Developer's Manual					    VM_MAP_WIRE(9)

NAME
vm_map_wire, vm_map_unwire -- manage page wiring within a virtual memory map SYNOPSIS
#include <sys/param.h> #include <vm/vm.h> #include <vm/vm_map.h> int vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end, int flags); int vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end, int flags); DESCRIPTION
The vm_map_wire() function is responsible for wiring pages in the range between start and end within the map map. Wired pages are locked into physical memory, and may not be paged out as long as their wire count remains above zero. The vm_map_unwire() function performs the corresponding unwire operation. The flags argument is a bit mask, consisting of the following flags: If the VM_MAP_WIRE_USER flag is set, the function operates within user address space. If the VM_MAP_WIRE_HOLESOK flag is set, it may operate upon an arbitrary range within the address space of map. If a contiguous range is desired, callers should explicitly express their intent by specifying the VM_MAP_WIRE_NOHOLES flag. IMPLEMENTATION NOTES
Both functions will attempt to acquire a lock on the map using vm_map_lock(9) and hold it for the duration of the call. If they detect MAP_ENTRY_IN_TRANSITION, they will call vm_map_unlock_and_wait(9) until the map becomes available again. The map could have changed during this window as it was held by another consumer, therefore consumers of this interface should check for this condition using the return values below. RETURN VALUES
The vm_map_wire() and vm_map_unwire() functions have identical return values. The functions return KERN_SUCCESS if all pages within the range were [un]wired successfully. Otherwise, if the specified range was not valid, or if the map changed while the MAP_ENTRY_IN_TRANSITION flag was set, KERN_INVALID_ADDRESS is returned. SEE ALSO
mlockall(2), munlockall(2), vm_map(9) AUTHORS
This manual page was written by Bruce M Simpson <bms@spc.org>. BSD
July 19, 2003 BSD
Man Page