summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/proc.c b/proc.c
index 9f7064f..7382add 100644
--- a/proc.c
+++ b/proc.c
@@ -138,6 +138,24 @@ copyproc(struct proc* p)
return np;
}
+int
+growproc(int n)
+{
+ struct proc *cp = curproc[cpu()];
+ char *newmem, *oldmem;
+
+ newmem = kalloc(cp->sz + n);
+ if(newmem == 0) return -1;
+ memmove(newmem, cp->mem, cp->sz);
+ memset(newmem + cp->sz, 0, n);
+ oldmem = cp->mem;
+ cp->mem = newmem;
+ kfree(oldmem, cp->sz);
+ cp->sz += n;
+ cprintf("growproc: added %d bytes\n", n);
+ return 0;
+}
+
// Per-CPU process scheduler.
// Each CPU calls scheduler() after setting itself up.
// Scheduler never returns. It loops, doing: