Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ brk(2) — Motorola System V 88k Release 4 Version 4.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exec(2)

shmop(2)

ulimit(2)

end(3C)

brk(2)  —  SYSTEM CALLS

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 in­creases 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 Returned when the system is out of swap space. 

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. 

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