1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#include <sys/types.h> #define N ((void *)-1) extern void *SYS_brk(void *x); static void *cur = N; void *sbrk(ssize_t incr) { void *t=0, *old=N; if (cur == N) { again: cur = SYS_brk(t); if (cur == N) return cur; } if (old == N) { old = cur; if (incr) { t = old + incr; goto again; } } return old; }