ref: 33bdd7e6c2bbfc7e2373b4e8d0371fd89dc31e52
dir: /sys/src/ape/lib/ap/plan9/brk.c/
#include "lib.h" #include <errno.h> #include <stdint.h> #include "sys9.h" char end[]; static char *bloc = { end }; extern int _BRK_(void*); char * brk(char *p) { unsigned long n; n = (uintptr_t)p; n += 3; n &= ~3; if(_BRK_((void*)n) < 0){ errno = ENOMEM; return (char *)-1; } bloc = (char *)n; return 0; } void * sbrk(unsigned long n) { n += 3; n &= ~3; if(_BRK_((void *)(bloc+n)) < 0){ errno = ENOMEM; return (void *)-1; } bloc += n; return (void *)(bloc-n); }