67 lines
1.2 KiB
Plaintext
67 lines
1.2 KiB
Plaintext
|
.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).
|