diff options
Diffstat (limited to 'system/__sbrk.c')
| -rw-r--r-- | system/__sbrk.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/system/__sbrk.c b/system/__sbrk.c new file mode 100644 index 0000000..df2a302 --- /dev/null +++ b/system/__sbrk.c @@ -0,0 +1,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; +} |
