ref: 65ef69a85d1c0f4694a361f5a0a99bdbb4f2cd95
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; }