sbrk.c 532 B

1234567891011121314151617181920212223242526272829
  1. /* From libc-5.3.12 */
  2. #include <errno.h>
  3. #include <unistd.h>
  4. #include <sys/syscall.h>
  5. libc_hidden_proto(sbrk)
  6. extern void * __curbrk;
  7. extern int __init_brk (void);
  8. libc_hidden_proto(__init_brk)
  9. extern void *_brk(void *ptr) attribute_hidden;
  10. void *
  11. sbrk(intptr_t increment)
  12. {
  13. if (__init_brk () == 0)
  14. {
  15. char * tmp = (char*)__curbrk+increment;
  16. __curbrk = _brk(tmp);
  17. if (__curbrk == tmp)
  18. return tmp-increment;
  19. __set_errno(ENOMEM);
  20. return ((void *) -1);
  21. }
  22. return ((void *) -1);
  23. }
  24. libc_hidden_def(sbrk)