diff options
author | kaashoek <kaashoek> | 2006-08-10 01:28:57 +0000 |
---|---|---|
committer | kaashoek <kaashoek> | 2006-08-10 01:28:57 +0000 |
commit | 28d9ef04ddaa4cf32f3c63c976afdc535a36db98 (patch) | |
tree | 3ffd0e079e8fd5dab4e00a37fb657087ed7da720 /syscall.c | |
parent | 939f9edeac042b2678bd2943a32822fb2eed75b4 (diff) | |
download | xv6-labs-28d9ef04ddaa4cf32f3c63c976afdc535a36db98.tar.gz xv6-labs-28d9ef04ddaa4cf32f3c63c976afdc535a36db98.tar.bz2 xv6-labs-28d9ef04ddaa4cf32f3c63c976afdc535a36db98.zip |
printf
convert userfs to use printf
bfree
ifree
writei
start on unlink
Diffstat (limited to 'syscall.c')
-rw-r--r-- | syscall.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -331,6 +331,30 @@ sys_mknod(void) } int +sys_unlink(void) +{ + struct proc *cp = curproc[cpu()]; + struct inode *ip; + uint arg0; + + if(fetcharg(0, &arg0) < 0) + return -1; + + if(checkstring(arg0) < 0) + return -1; + + ip = namei(cp->mem + arg0); + ip->nlink--; + if (ip->nlink <= 0) { + panic("sys_link: unimplemented\n"); + } + iupdate(ip); + iput(ip); + + return 0; +} + +int sys_exec(void) { struct proc *cp = curproc[cpu()]; @@ -561,6 +585,9 @@ syscall(void) case SYS_mknod: ret = sys_mknod(); break; + case SYS_unlink: + ret = sys_unlink(); + break; default: cprintf("unknown sys call %d\n", num); // XXX fault |