Files
retrobsd/sys/kernel/kern_mman.c
2014-04-09 14:27:18 +01:00

39 lines
866 B
C

/*
* Copyright (c) 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#include "param.h"
#include "user.h"
#include "proc.h"
#include "vm.h"
#include "systm.h"
void
brk()
{
struct a {
int naddr;
};
register int newsize, d;
/* set newsize to new data size */
newsize = ((struct a*)u.u_arg)->naddr - u.u_procp->p_daddr;
if (newsize < 0)
newsize = 0;
if (u.u_tsize + newsize + u.u_ssize > MAXMEM) {
u.u_error = ENOMEM;
return;
}
u.u_procp->p_dsize = newsize;
/* set d to (new - old) */
d = newsize - u.u_dsize;
//printf ("brk: new size %u bytes, incremented by %d\n", newsize, d);
if (d > 0)
bzero ((void*) (u.u_procp->p_daddr + u.u_dsize), d);
u.u_dsize = newsize;
u.u_rval = u.u_procp->p_daddr + u.u_dsize;
}