This is sbrkNeXT.c in view mode; [Download] [Up]
/*
* sbrkNeXT.c: replacement for NeXT's bogus sbrk
*
* by Noritake Yonezawa, July 28, 1991
*/
#include <c.h>
#include <mach.h>
#include <stdio.h>
char *mach_maplimit = 0;
char *mach_brkpt = 0;
int big_heap = 0x1000000;
char *
my_sbrk(incr)
int incr;
{
char *temp, *ptr;
kern_return_t rtn;
if (mach_brkpt == 0)
{
if ((rtn = vm_allocate(task_self(), (vm_address_t *)&mach_brkpt,
big_heap, TRUE)) != KERN_SUCCESS)
{
mach_error("my_sbrk: vm_allocate failed", rtn);
return ((char *)-1);
}
mach_maplimit = mach_brkpt + big_heap;
}
if (incr == 0) {
return (mach_brkpt);
}
else
{
ptr = mach_brkpt + incr;
if (ptr <= mach_maplimit)
{
temp = mach_brkpt;
mach_brkpt = ptr;
return (temp);
}
else
{
fprintf (stderr, "my_sbrk: no more memory\n");
return ((char *)-1);
}
}
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.