4.3BSD-UWisc/man/cat2/brk.2

Compare this file to the similar file:
Show the results in this format:




BRK(2)              UNIX Programmer's Manual               BRK(2)



NAME
     brk, sbrk - change data segment size

SYNOPSIS
     #include <sys/types.h>

     char *brk(addr)
     char *addr;

     char *sbrk(incr)
     int incr;

DESCRIPTION
     _B_r_k sets the system's idea of the lowest data segment loca-
     tion not used by the program (called the break) to _a_d_d_r
     (rounded up to the next multiple of the system's page size).
     Locations greater than _a_d_d_r and below the stack pointer are
     not in the address space and will thus cause a memory viola-
     tion if accessed.

     In the alternate function _s_b_r_k, _i_n_c_r more bytes are added to
     the program's data space and a pointer to the start of the
     new area is returned.

     When a program begins execution via _e_x_e_c_v_e the break is set
     at the highest location defined by the program and data
     storage areas.  Ordinarily, therefore, only programs with
     growing data areas need to use _s_b_r_k.

     The _g_e_t_r_l_i_m_i_t(2) system call may be used to determine the
     maximum permissible size of the _d_a_t_a segment; it will not be
     possible to set the break beyond the _r_l_i_m__m_a_x value returned
     from a call to _g_e_t_r_l_i_m_i_t, e.g. "etext + rlp->rlim_max." (see
     _e_n_d(3) for the definition of _e_t_e_x_t).

RETURN VALUE
     Zero is returned if the _b_r_k could be set; -1 if the program
     requests more memory than the system limit.  _S_b_r_k returns -1
     if the break could not be set.

ERRORS
     _S_b_r_k will fail and no additional memory will be allocated if
     one of the following are true:

     [ENOMEM]       The limit, as set by _s_e_t_r_l_i_m_i_t(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.



Printed 12/27/86          May 22, 1986                          1






BRK(2)              UNIX Programmer's Manual               BRK(2)



SEE ALSO
     execve(2), getrlimit(2), malloc(3), 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 _g_e_t_r_l_i_m_i_t.















































Printed 12/27/86          May 22, 1986                          2