sbrk.c 540 B

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