summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
authorkaashoek <kaashoek>2006-08-23 01:09:24 +0000
committerkaashoek <kaashoek>2006-08-23 01:09:24 +0000
commit8b58e81077abf4e843873f16c03077e2fafce52d (patch)
tree9613a801fc9b3421ee79725782e3ef9bb4650574 /proc.c
parentf18ab5c04e5380e0fb27f63e8335e5d621315c1d (diff)
downloadxv6-labs-8b58e81077abf4e843873f16c03077e2fafce52d.tar.gz
xv6-labs-8b58e81077abf4e843873f16c03077e2fafce52d.tar.bz2
xv6-labs-8b58e81077abf4e843873f16c03077e2fafce52d.zip
i/o redirection in sh
better parsing of sh commands (copied from jos sh) cat: read from 1 if no args sbrk system call, but untested getpid system call moved locks in keyboard intr, but why do we get intr w. null characters from keyboard?
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: