Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exec(2)

shmop(2)

ulimit(2)

end(3C)





   brk(2)                                                               brk(2)


   NAME
         brk, sbrk - change data segment space allocation

   SYNOPSIS
         #include <unistd.h>

         int brk(void *endds);

         void *sbrk(int 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)].

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

   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.






   7/91                                                                 Page 1





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026