vm_map_stack vm_map_growstack - manage process stacks
It is typically called by execve(2).
The
vm_map_growstack ();
function is responsible for growing a stack for the process
Fa p
to the desired address
Fa addr ,
similar to the legacy
sbrk(2)
call.
The
vm_map_growstack ();
function acquires the
Giant
lock, and the process lock on
Fa p ,
for the duration of the call.
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 Fa 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_insert9.
The
vm_map_growstack ();
function returns
KERN_SUCCESS
if
Fa addr
is already mapped, or if the stack was grown successfully.
It also returns
KERN_SUCCESS
if
Fa 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
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |