NAME
	  brk, sbrk - Changes data segment size

     LIBRARY
	  Standard C Library (libc.a)

     SYNOPSIS
	  int brk(
	       char *addr );
	  char *sbrk(
	       int incr	);


     PARAMETERS
	  addr	    Points to the effective address of the maximum
		    available data.

	  incr	    Specifies the number of bytes to be	added to the
		    current break.  The	value of incr may be positive
		    or negative.


     DESCRIPTION
	  The brk() function sets the lowest data segment location not
	  used by the program (called the break) to addr, rounded up
	  to the next multiple of the system's page size.

	  In the alternate function sbrk(), incr more bytes are	added
	  to the program's data	space, and a pointer to	the start of
	  the new area is returned.

	  When a program begins	execution with the execve() function,
	  the break is set at the highest location defined by the pro-
	  gram and data	storage	areas.	Therefore, only	programs with
	  growing data areas should need to use	sbrk().

	  The current value of the program break is reliably returned
	  by ``sbrk(0)''.  The getrlimit() function may	be used	to
	  determine the	maximum	permissible size of the	data segment.
	  It is	not possible to	set the	break beyond the value
	  returned from	a call to the getrlimit() function.

	  If the data segment was locked at the	time of	the brk()
	  function, additional memory allocated	to the data segment by
	  brk()	will also be locked.

     NOTES
	  Programmers should be	aware that the concept of a current
	  break	is a historical	remnant	of earlier UNIX	systems.  Many
	  existing UNIX	programs were designed using this memory
	  model, and these programs typically use the brk() or sbrk()
	  functions to increase	or decrease their available memory.
	  OSF/1	provides a more	flexible memory	model and allows the
	  use of discontiguous memory areas (see, for example, the
	  mmap() function).  Therefore,	references to areas above the
	  break	may be legitimate memory references which will not
	  produce memory violations.

     RETURN VALUES
	  Upon successful completion, the brk()	function returns a
	  value	of 0 (zero), and the sbrk function returns the old
	  break	value.	If either call fails, a	value of -1 is
	  returned and errno is	set to indicate	the error.

     ERRORS
	  If the brk() or sbrk() function fails, no additional memory
	  is allocated and errno may be	set to the following value:


	  [ENOMEM]  The	requested change would allocate	more space
		    than allowed by the	limit as returned by the getr-
		    limit() function.


	  If the brk() function	cannot allocate	the requested memory,
	  the following	message	is printed:

	  cmd: could not sbrk, return =	n

	  Where	cmd is the name	of the command currently executing,
	  and n	is the internal	kernel error code returned from	the
	  memory allocation routine, vm_allocate().  Note that this
	  may occur if the requested break value would cause the data
	  segment to collide with previously allocated memory (for
	  example, memory obtained via the mmap() or vm_allocate()
	  call).  See the OSF/1	System Programmer's Reference Volume 1
	  for more information on vm_allocate().

     RELATED INFORMATION
	  Functions: exec(2), getrlimit(2), malloc(3), plock(2),
	  mmap(2)













Acknowledgement and Disclaimer