63 lines
1.2 KiB
Text
63 lines
1.2 KiB
Text
|
.TH BRK 2
|
||
|
.SH NAME
|
||
|
brk, sbrk \- change memory allocation
|
||
|
.SH SYNOPSIS
|
||
|
.B #include <u.h>
|
||
|
.br
|
||
|
.B #include <libc.h>
|
||
|
.PP
|
||
|
.ta \w'\fLvoid* 'u
|
||
|
.B
|
||
|
int brk(void *addr)
|
||
|
.PP
|
||
|
.B
|
||
|
void* sbrk(ulong incr)
|
||
|
.SH DESCRIPTION
|
||
|
.I Brk
|
||
|
sets the system's idea of the lowest bss location not used by the program
|
||
|
(called the break)
|
||
|
to
|
||
|
.I addr
|
||
|
rounded up to the next multiple of 8 bytes.
|
||
|
Locations not less than
|
||
|
.I addr
|
||
|
and below the stack pointer
|
||
|
may cause a memory violation if accessed.
|
||
|
.PP
|
||
|
In the alternate function
|
||
|
.IR sbrk ,
|
||
|
.I incr
|
||
|
more bytes are added to the
|
||
|
program's data space and a pointer to the
|
||
|
start of the new area is returned.
|
||
|
Rounding occurs as with
|
||
|
.IR brk .
|
||
|
.PP
|
||
|
When a program begins execution via
|
||
|
.I exec
|
||
|
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
|
||
|
.IR brk .
|
||
|
A call to
|
||
|
.I sbrk
|
||
|
with a zero argument returns the lowest address
|
||
|
in the dynamic segment.
|
||
|
.SH SOURCE
|
||
|
.B /sys/src/libc/9sys/sbrk.c
|
||
|
.SH SEE ALSO
|
||
|
.IR intro (2),
|
||
|
.IR malloc (2),
|
||
|
.IR segattach (2),
|
||
|
.IR segbrk (2)
|
||
|
.SH DIAGNOSTICS
|
||
|
These functions set
|
||
|
.IR errstr .
|
||
|
.PP
|
||
|
The error return from
|
||
|
.I sbrk
|
||
|
is
|
||
|
.BR (void*)-1 .
|