sbrk.c 502 B

12345678910111213141516171819202122232425262728
  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. extern void *_brk(void *ptr) attribute_hidden;
  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)