diff options
author | kaashoek <kaashoek> | 2006-08-23 01:09:24 +0000 |
---|---|---|
committer | kaashoek <kaashoek> | 2006-08-23 01:09:24 +0000 |
commit | 8b58e81077abf4e843873f16c03077e2fafce52d (patch) | |
tree | 9613a801fc9b3421ee79725782e3ef9bb4650574 /proc.c | |
parent | f18ab5c04e5380e0fb27f63e8335e5d621315c1d (diff) | |
download | xv6-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.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -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: |