ref: 50a98145e6c07f4e3ec588eb040334f531b5fe7c
dir: /sys/src/libc/9sys/sbrk.c/
#include <u.h> #include <libc.h> extern char end[]; static char *bloc = { end }; extern int brk_(void*); enum { Round = 7 }; int brk(void *p) { uintptr bl; bl = ((uintptr)p + Round) & ~Round; if(brk_((void*)bl) < 0) return -1; bloc = (char*)bl; return 0; } void* sbrk(usize n) { uintptr bl; bl = ((uintptr)bloc + Round) & ~Round; if(brk_((void*)(bl+n)) < 0) return (void*)-1; bloc = (char*)bl + n; return (void*)bl; }