From 83d2db91f75460e1275d67847adec0fca5a9800b Mon Sep 17 00:00:00 2001 From: Robert Morris Date: Tue, 10 Aug 2010 17:08:41 -0400 Subject: allow sbrk(-x) to de-allocate user memory --- proc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'proc.c') diff --git a/proc.c b/proc.c index f799a4d..e69bacf 100644 --- a/proc.c +++ b/proc.c @@ -142,8 +142,13 @@ userinit(void) int growproc(int n) { - if (!allocuvm(proc->pgdir, (char *)proc->sz, n)) - return -1; + if(n > 0){ + if (!allocuvm(proc->pgdir, (char *)proc->sz, n)) + return -1; + } else if(n < 0){ + if (!deallocuvm(proc->pgdir, (char *)(proc->sz + n), 0 - n)) + return -1; + } proc->sz += n; switchuvm(proc); return 0; -- cgit v1.2.3