13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier extern char end[]; 53e12c5d1SDavid du Colombier static char *bloc = { end }; 63e12c5d1SDavid du Colombier extern int brk_(void*); 73e12c5d1SDavid du Colombier 8219b2ee8SDavid du Colombier enum 9219b2ee8SDavid du Colombier { 10219b2ee8SDavid du Colombier Round = 7 11219b2ee8SDavid du Colombier }; 12219b2ee8SDavid du Colombier 133e12c5d1SDavid du Colombier int brk(void * p)143e12c5d1SDavid du Colombierbrk(void *p) 153e12c5d1SDavid du Colombier { 16*5e91980fSDavid du Colombier uintptr bl; 173e12c5d1SDavid du Colombier 18*5e91980fSDavid du Colombier bl = ((uintptr)p + Round) & ~Round; 19219b2ee8SDavid du Colombier if(brk_((void*)bl) < 0) 203e12c5d1SDavid du Colombier return -1; 21219b2ee8SDavid du Colombier bloc = (char*)bl; 223e12c5d1SDavid du Colombier return 0; 233e12c5d1SDavid du Colombier } 243e12c5d1SDavid du Colombier 253e12c5d1SDavid du Colombier void* sbrk(ulong n)263e12c5d1SDavid du Colombiersbrk(ulong n) 273e12c5d1SDavid du Colombier { 28*5e91980fSDavid du Colombier uintptr bl; 293e12c5d1SDavid du Colombier 30*5e91980fSDavid du Colombier bl = ((uintptr)bloc + Round) & ~Round; 31219b2ee8SDavid du Colombier if(brk_((void*)(bl+n)) < 0) 323e12c5d1SDavid du Colombier return (void*)-1; 33219b2ee8SDavid du Colombier bloc = (char*)bl + n; 34219b2ee8SDavid du Colombier return (void*)bl; 353e12c5d1SDavid du Colombier } 36