brk.c 373 B

12345678910111213141516171819202122
  1. /* From libc-5.3.12 */
  2. #include <errno.h>
  3. #include <unistd.h>
  4. #include <sys/syscall.h>
  5. extern void * ___brk_addr;
  6. extern int __init_brk (void);
  7. extern void *_brk(void *ptr);
  8. int brk(void * end_data_seg)
  9. {
  10. if (__init_brk () == 0)
  11. {
  12. ___brk_addr = _brk(end_data_seg);
  13. if (___brk_addr == end_data_seg)
  14. return 0;
  15. __set_errno(ENOMEM);
  16. }
  17. return -1;
  18. }