xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/brk.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1 #include "lib.h"
2 #include <errno.h>
3 #include "sys9.h"
4 
5 char	end[];
6 static	char	*bloc = { end };
7 extern	int	_BRK_(void*);
8 
9 char *
10 brk(char *p)
11 {
12 	unsigned long n;
13 
14 	n = (unsigned long)p;
15 	n += 3;
16 	n &= ~3;
17 	if(_BRK_((void*)n) < 0){
18 		errno = ENOMEM;
19 		return (char *)-1;
20 	}
21 	bloc = (char *)n;
22 	return 0;
23 }
24 
25 char *
26 sbrk(int n)
27 {
28 
29 	n += 3;
30 	n &= ~3;
31 	if(_BRK_((void *)(bloc+n)) < 0){
32 		errno = ENOMEM;
33 		return (char *)-1;
34 	}
35 	bloc += n;
36 	return (char *)(bloc-n);
37 }
38