87 lines
2.0 KiB
Groff
87 lines
2.0 KiB
Groff
.\" Copyright (c) 1980 Regents of the University of California.
|
|
.\" All rights reserved. The Berkeley software License Agreement
|
|
.\" specifies the terms and conditions for redistribution.
|
|
.\"
|
|
.\" @(#)brk.2 6.3 (Berkeley) 5/22/86
|
|
.\"
|
|
.TH BRK 2 "May 22, 1986"
|
|
.UC 4
|
|
.SH NAME
|
|
brk, sbrk \- change data segment size
|
|
.SH SYNOPSIS
|
|
.nf
|
|
#include <unistd.h>
|
|
.PP
|
|
.ft B
|
|
int brk(char *\fIaddr\fP)
|
|
.PP
|
|
.ft B
|
|
char *sbrk(int \fIincr\fP)
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.B Brk
|
|
sets the system's idea of the lowest data segment
|
|
location not used by the program (called the break)
|
|
to
|
|
.IR addr .
|
|
Locations greater than
|
|
.I addr
|
|
and below the stack pointer
|
|
are not in the address space and will thus
|
|
cause a memory violation if accessed.
|
|
.PP
|
|
In the alternate function
|
|
.BR 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.
|
|
.PP
|
|
When a program begins execution via
|
|
.B execve
|
|
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
|
|
.BR sbrk .
|
|
.SH "RETURN VALUE
|
|
The address of the new break is returned if
|
|
.B brk
|
|
succeeds;
|
|
.B \-1
|
|
if the program requests more
|
|
memory than the system limit.
|
|
.B Sbrk
|
|
returns
|
|
.B \-1
|
|
if the break could not be set.
|
|
.SH ERRORS
|
|
.B Sbrk
|
|
will fail and no additional memory will be allocated if
|
|
one of the following are true:
|
|
.TP 15
|
|
[ENOMEM]
|
|
The maximum possible size of a data segment (as set by
|
|
.BR chmem (1))
|
|
was exceeded.
|
|
.TP 15
|
|
[ENOMEM]
|
|
Insufficient virtual memory space existed
|
|
to support the expansion. (Minix-vmd)
|
|
.SH "SEE ALSO"
|
|
.BR chmem (1),
|
|
.BR execve (2),
|
|
.BR malloc (3),
|
|
.BR end (3).
|
|
.SH NOTES
|
|
Minix-vmd rounds a small data segment limit up to 3 megabytes.
|
|
.SH BUGS
|
|
Setting the break may fail due to a temporary lack of
|
|
virtual memory under Minix-vmd. It is not possible to distinguish this
|
|
from a failure caused by exceeding the maximum size of
|
|
the data segment.
|
|
|
|
.\"
|
|
.\" $PchId: brk.2,v 1.2 2000/08/11 20:05:51 philip Exp $
|