Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What do brk and sbrk stand for?

Tags:

c

unix

brk

sbrk

While I know what the Unix system call brk and function sbrk do, I have no idea what they stand for. Can anyone enlighten me?

like image 496
Thomas Eding Avatar asked Jul 28 '11 22:07

Thomas Eding


People also ask

What does brk and sbrk do?

The brk() and sbrk() functions are used to change the amount of space allocated for the calling process. The change is made by resetting the process' break value and allocating the appropriate amount of space. The amount of allocated space increases as the break value increases. The newly-allocated space is set to 0.

What is the difference between brk () and sbrk ()?

brk identifies the lowest data segment location not used by the caller as addr . This location is rounded up to the next multiple of the system page size. sbrk , the alternate interface, adds incr bytes to the caller data space and returns a pointer to the start of the new data area.

What is brk and sbrk system calls?

brk and sbrk are basic memory management system calls used in Unix and Unix-like operating systems to control the amount of memory allocated to the data segment of the process. These functions are typically called from a higher-level memory management library function such as malloc.

What does sbrk return?

Return Values Upon successful completion, sbrk() returns the prior break value. Otherwise, it returns (void *)−1 and sets errno to indicate the error.


2 Answers

It comes from "break value".

I quote: "The change is made by resetting the process's break value and allocating the appropriate amount of space. The break value is the address of the first location beyond the end of the data segment."

(source: http://www.s-gms.ms.edus.si/cgi-bin/man-cgi?brk+2)

like image 50
nielsj Avatar answered Oct 15 '22 20:10

nielsj


Just read the man page:

brk() and sbrk() change the location of the program break, which defines the end of the process's data segment (i.e., the program break is the first location after the end of the uninitialized data segment). Increasing the program break has the effect of allocating memory to the process; decreasing the break deallocates memory.

brk() sets the end of the data segment to the value specified by addr, when that value is reasonable, the system has enough memory, and the process does not exceed its maximum data size (see setrlimit(2)).

sbrk() increments the program's data space by increment bytes. Calling sbrk() with an increment of 0 can be used to find the current location of the program break.

like image 41
Izana Avatar answered Oct 15 '22 21:10

Izana