brk(2)                                                                  brk(2)


NAME
     brk, sbrk - change data segment space allocation

C SYNOPSIS
     #include <unistd.h>

     int brk (void *endds);

     void *sbrk (ssize_t incr);

DESCRIPTION
     brk and sbrk are used to change dynamically the amount of space allocated
     for the calling process's data segment [see exec(2)].  The change is made
     by resetting the process's break value and allocating the appropriate
     amount of space.  The break value is the address of the first location
     beyond the end of the data segment.  The amount of allocated space
     increases as the break value increases.  Newly allocated space is set to
     zero.  If, however, the same memory space is reallocated to the same
     process its contents are undefined.

     brk sets the break value to endds and changes the allocated space
     accordingly.

     sbrk adds incr bytes to the break value and changes the allocated space
     accordingly.  incr can be negative, in which case the amount of allocated
     space is decreased.

     brk and sbrk will fail without making any change in the allocated space
     if one or more of the following are true:

          ENOMEM       Such a change would result in more space being
                       allocated than is allowed by the system-imposed maximum
                       process size [see ulimit(2)]. If the change is a
                       reduction of space, this error is returned if the
                       reduction would exceed the entire data segment space.

          EAGAIN       Total amount of system memory available for a read
                       during physical IO is temporarily insufficient [see
                       shmop(2)].  This may occur even though the space
                       requested was less than the system-imposed maximum
                       process size [see ulimit(2)].

SEE ALSO
     exec(2), shmop(2), ulimit(2), end(3C).

CAVEATS
     sbrk(2) is not multithreaded.  Simultaneous sbrk calls with positive
     increments will return the same value.  It is recommended that malloc(2)
     be used instead of sbrk(2).


DIAGNOSTICS
     Upon successful completion, brk returns a value of 0 and sbrk returns the
     old break value.  Otherwise, a value of -1 is returned and errno is set
     to indicate the error.


                                                                        Page 2