yuezonghe | 824eb0c | 2024-06-27 02:32:26 -0700 | [diff] [blame^] | 1 | /* From libc-5.3.12 */ |
2 | |||||
3 | #include <errno.h> | ||||
4 | #include <unistd.h> | ||||
5 | #include <sys/syscall.h> | ||||
6 | |||||
7 | extern void * __curbrk attribute_hidden; | ||||
8 | extern int __init_brk (void) attribute_hidden; | ||||
9 | extern void *_brk(void *ptr) attribute_hidden; | ||||
10 | |||||
11 | void * | ||||
12 | sbrk(intptr_t increment) | ||||
13 | { | ||||
14 | if (__init_brk () == 0) | ||||
15 | { | ||||
16 | char * tmp = (char*)__curbrk+increment; | ||||
17 | __curbrk = _brk(tmp); | ||||
18 | if (__curbrk == tmp) | ||||
19 | return tmp-increment; | ||||
20 | __set_errno(ENOMEM); | ||||
21 | return ((void *) -1); | ||||
22 | } | ||||
23 | return ((void *) -1); | ||||
24 | } | ||||
25 | libc_hidden_def(sbrk) |