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 $
 |