ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

This manual page is associated with the Mac OS X developer tools. The software or headers described may not be present on your Mac OS X installation until you install the developer tools package. This package is available on your Mac OS X installation DVD, and the latest versions can be downloaded from developer.apple.com.

For more information about the manual page format, see the manual page for manpages(5).



BRK(2)                      BSD System Calls Manual                     BRK(2)

NAME
     brk, sbrk -- change data segment size

SYNOPSIS
     #include <unistd.h>

     void *
     brk(const void *addr);

     void *
     sbrk(int incr);

DESCRIPTION
     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, e.g.
     ``qetext + rlp->rlim_max.'' (see end(3) for the definition of etext).

RETURN VALUES
     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 suc-cessful; successful;
     cessful; otherwise -1 with errno set to indicate why the allocation failed.

ERRORS
     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
     execve(2), getrlimit(2), malloc(3), mmap(2), end(3)

BUGS
     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.

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

4th Berkeley Distribution      December 11, 1993     4th Berkeley Distribution

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.