xref: /minix3/minix/lib/libc/sys/sbrk.c (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1*433d6423SLionel Sambuc #include <sys/cdefs.h>
2*433d6423SLionel Sambuc #include "namespace.h"
3*433d6423SLionel Sambuc #include <lib.h>
4*433d6423SLionel Sambuc 
5*433d6423SLionel Sambuc #include <unistd.h>
6*433d6423SLionel Sambuc 
7*433d6423SLionel Sambuc #ifdef __weak_alias
8*433d6423SLionel Sambuc __weak_alias(sbrk, _sbrk)
9*433d6423SLionel Sambuc #endif
10*433d6423SLionel Sambuc 
11*433d6423SLionel Sambuc extern char *_brksize;
12*433d6423SLionel Sambuc 
sbrk(incr)13*433d6423SLionel Sambuc void *sbrk(incr)
14*433d6423SLionel Sambuc intptr_t incr;
15*433d6423SLionel Sambuc {
16*433d6423SLionel Sambuc   char *newsize, *oldsize;
17*433d6423SLionel Sambuc 
18*433d6423SLionel Sambuc   oldsize = _brksize;
19*433d6423SLionel Sambuc   newsize = _brksize + incr;
20*433d6423SLionel Sambuc   if ((incr > 0 && newsize < oldsize) || (incr < 0 && newsize > oldsize))
21*433d6423SLionel Sambuc 	return( (char *) -1);
22*433d6423SLionel Sambuc   if (brk(newsize) == 0)
23*433d6423SLionel Sambuc 	return(oldsize);
24*433d6423SLionel Sambuc   else
25*433d6423SLionel Sambuc 	return( (char *) -1);
26*433d6423SLionel Sambuc }
27