13e12c5d1SDavid du Colombier #include "lib.h" 23e12c5d1SDavid du Colombier #include <errno.h> 33e12c5d1SDavid du Colombier #include "sys9.h" 43e12c5d1SDavid du Colombier 53e12c5d1SDavid du Colombier char end[]; 63e12c5d1SDavid du Colombier static char *bloc = { end }; 73e12c5d1SDavid du Colombier extern int _BRK_(void*); 83e12c5d1SDavid du Colombier 93e12c5d1SDavid du Colombier char * brk(char * p)103e12c5d1SDavid du Colombierbrk(char *p) 113e12c5d1SDavid du Colombier { 123e12c5d1SDavid du Colombier unsigned long n; 133e12c5d1SDavid du Colombier 143e12c5d1SDavid du Colombier n = (unsigned long)p; 153e12c5d1SDavid du Colombier n += 3; 163e12c5d1SDavid du Colombier n &= ~3; 173e12c5d1SDavid du Colombier if(_BRK_((void*)n) < 0){ 183e12c5d1SDavid du Colombier errno = ENOMEM; 193e12c5d1SDavid du Colombier return (char *)-1; 203e12c5d1SDavid du Colombier } 213e12c5d1SDavid du Colombier bloc = (char *)n; 223e12c5d1SDavid du Colombier return 0; 233e12c5d1SDavid du Colombier } 243e12c5d1SDavid du Colombier 25*8e5b7f3bSDavid du Colombier void * sbrk(unsigned long n)26*8e5b7f3bSDavid du Colombiersbrk(unsigned long n) 273e12c5d1SDavid du Colombier { 283e12c5d1SDavid du Colombier n += 3; 293e12c5d1SDavid du Colombier n &= ~3; 303e12c5d1SDavid du Colombier if(_BRK_((void *)(bloc+n)) < 0){ 313e12c5d1SDavid du Colombier errno = ENOMEM; 32*8e5b7f3bSDavid du Colombier return (void *)-1; 333e12c5d1SDavid du Colombier } 343e12c5d1SDavid du Colombier bloc += n; 35*8e5b7f3bSDavid du Colombier return (void *)(bloc-n); 363e12c5d1SDavid du Colombier } 37