*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> sbrk (2)              
Title
Content
Arch
Section
 

BRK(2)

Contents


NAME    [Toc]    [Back]

     brk, sbrk - change data segment size

SYNOPSIS    [Toc]    [Back]

     #include <unistd.h>

     char *
     brk(const char *addr);

     char *
     sbrk(int incr);

DESCRIPTION    [Toc]    [Back]

     The brk() and sbrk() functions  are  historical  curiosities
left over from
     earlier days before the advent of virtual memory management.
The brk()
     function sets the break or lowest address of a process's data segment
     (uninitialized  data) to addr (immediately above bss).  Data
addressing is
     restricted between addr and the lowest stack pointer to  the
stack segment.
   Memory is allocated by brk() in page size pieces; if
addr is not
     evenly divisible by the system page size, it is increased to
the next
     page boundary.

     The  current value of the program break is reliably returned
by
     ``sbrk(0)'' (see also end(3)).  The getrlimit(2) system call
may be used
     to  determine  the maximum permissible size of the data segment; it will
     not be possible to set the break beyond the  rlim_max  value
returned from
     a  call  to  getrlimit(2),  e.g., ``etext + rlp->rlim_max''.
(see end(3) for
     the definition of etext).

RETURN VALUES    [Toc]    [Back]

     brk() returns a pointer to the new end of memory if successful; otherwise
     -1  with  errno  set  to indicate why the allocation failed.
The sbrk()
     function returns a pointer to the base of the new storage if
successful;
     otherwise  -1  with errno set to indicate why the allocation
failed.

ERRORS    [Toc]    [Back]

     sbrk() will fail and no additional memory will be  allocated
if one of the
     following are true:

     [ENOMEM]      The limit, as set by setrlimit(2), was exceeded.

     [ENOMEM]      The maximum possible size of  a  data  segment
(compiled into
                   the system) was exceeded.

     [ENOMEM]      Insufficient space existed in the swap area to
support the
                   expansion.

SEE ALSO    [Toc]    [Back]

      
      
     execve(2), getrlimit(2), mmap(2), end(3), malloc(3)

HISTORY    [Toc]    [Back]

     A brk() function call appeared in Version 7 AT&T UNIX.

BUGS    [Toc]    [Back]

     Setting the break may fail due to a temporary lack  of  swap
space.  It is
     not  possible  to  distinguish this from a failure caused by
exceeding the
     maximum size of the data segment without consulting getrlimit(2).

OpenBSD      3.6                        December     11,     1993
[ Back ]
 Similar pages
Name OS Title
maxdsiz_64bit HP-UX maximum size (in bytes) of the data segment for any user process
maxdsiz HP-UX maximum size (in bytes) of the data segment for any user process
sbrk HP-UX change data segment space allocation
brk HP-UX change data segment space allocation
brk IRIX change data segment space allocation
shmmax HP-UX maximum size (in bytes) for a System V shared memory segment
maxtsiz_64bit HP-UX maximum size (in bytes) of the text segment for any user process
maxtsiz HP-UX maximum size (in bytes) of the text segment for any user process
resizeterm OpenBSD change the curses terminal size
resizeterm FreeBSD change the curses terminal size
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service