git: 9front

ref: a60a794ed154a57b2f8c43d27c83a85f7b352165
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).