git: 9front

ref: e1f02664d96e392a608d97c5bdd0c1c3c6a26c84
dir: /sys/man/2/segbrk/

View raw version
.TH SEGBRK 2
.SH NAME
segbrk \- change memory allocation
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.ta \w'\fLvoid* 'u
.B
void*	segbrk(void *saddr, void *addr)
.PP
.SH DESCRIPTION
.I Segbrk
sets the system's idea of the lowest unused location of a segment
to
.I addr
rounded up to the next multiple of a page size, typically 4096 bytes.
The segment is identified by
.I saddr
which may be any valid address within the segment.
.PP
A call to
.I segbrk
with a zero
.I addr
argument returns the address
of the top of bss.
.PP
The system will prevent segments from overlapping and will not allow the
length of the
text, data, or stack segment to be altered.
.SH SOURCE
.B /sys/src/libc/9syscall
.SH SEE ALSO
.IR brk (2),
.IR segattach (2),
.IR segflush (2)
.br
.BR /proc/*/segment
.SH DIAGNOSTICS
Sets
.IR errstr .
.I Segbrk
returns
.B (void*)-1
on error.
.SH BUGS
.I Segbrk
is not fully defined or implemented.
In particular,
it cannot always return the top of bss
when called with a zero
.I addr
argument.
The
.I segbrk
system call may go away or be re-implemented
to give more general segment control,
subsuming the functions of
.IR brk (2),
.IR segflush (2)
and
.I segfree
in
.IR segattach (2).