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