33 lines
		
	
	
	
		
			562 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			562 B
		
	
	
	
		
			C
		
	
	
	
	
	
#include <lib.h>
 | 
						|
#define brk	_brk
 | 
						|
#define sbrk	_sbrk
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
extern char *_brksize;
 | 
						|
 | 
						|
PUBLIC char *brk(addr)
 | 
						|
char *addr;
 | 
						|
{
 | 
						|
  if (_callm1(MM, BRK, 0, 0, 0, addr, NIL_PTR, NIL_PTR) == 0) {
 | 
						|
	_brksize = _M.m2_p1;
 | 
						|
	return(NIL_PTR);
 | 
						|
  } else {
 | 
						|
	return((char *) -1);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
PUBLIC char *sbrk(incr)
 | 
						|
int incr;
 | 
						|
{
 | 
						|
  char *newsize, *oldsize;
 | 
						|
 | 
						|
  oldsize = _brksize;
 | 
						|
  newsize = _brksize + incr;
 | 
						|
  if (incr > 0 && newsize < oldsize || incr < 0 && newsize > oldsize)
 | 
						|
	return((char *) -1);
 | 
						|
  if (_brk(newsize) == 0)
 | 
						|
	return(oldsize);
 | 
						|
  else
 | 
						|
	return((char *) -1);
 | 
						|
}
 |