Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
VM_MAP_STACK(9)		   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  im-
       age.   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 map-
       pings.

       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 al-
       located successfully.

       Otherwise, if mapping the stack would exceed  the  process's  VMEM  re-
       source  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>.

FreeBSD	14.3		       January 11, 2013		       VM_MAP_STACK(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vm_map_stack&sektion=9&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help