brk.c 524 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "lib.h"
  2. extern char *brksize;
  3. PUBLIC char *brk(addr)
  4. char *addr;
  5. {
  6. int k;
  7. k = callm1(MM, BRK, 0, 0, 0, addr, NIL_PTR, NIL_PTR);
  8. if (k == OK) {
  9. brksize = M.m2_p1;
  10. return(NIL_PTR);
  11. } else {
  12. return( (char*) -1 );
  13. }
  14. }
  15. PUBLIC char *sbrk(incr)
  16. int incr;
  17. {
  18. char *newsize, *oldsize;
  19. oldsize = brksize;
  20. newsize = brksize + incr;
  21. if (incr > 0 && newsize < oldsize || incr < 0 && newsize > oldsize)
  22. return( (char *) -1);
  23. if (brk(newsize) == 0)
  24. return(oldsize);
  25. else
  26. return( (char *) -1 );
  27. }