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