From d15f0d1033a7da6448966d9626ec2776781e4188 Mon Sep 17 00:00:00 2001 From: kaashoek Date: Mon, 14 Aug 2006 03:00:13 +0000 Subject: start on mkdir stat --- syscall.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'syscall.c') diff --git a/syscall.c b/syscall.c index 5cfc20b..0ef2670 100644 --- a/syscall.c +++ b/syscall.c @@ -289,6 +289,31 @@ sys_mknod(void) return (nip == 0) ? -1 : 0; } +int +sys_mkdir(void) +{ + struct proc *cp = curproc[cpu()]; + struct inode *nip; + uint arg0; + int l; + + if(fetcharg(0, &arg0) < 0) + return -1; + + if((l = checkstring(arg0)) < 0) + return -1; + + if(l >= DIRSIZ) + return -1; + + nip = mknod (cp->mem + arg0, T_DIR, 0, 0); + + // XXX put . and .. in + + iput(nip); + return (nip == 0) ? -1 : 0; +} + int sys_unlink(void) { @@ -561,6 +586,9 @@ syscall(void) case SYS_link: ret = sys_link(); break; + case SYS_mkdir: + ret = sys_mkdir(); + break; default: cprintf("unknown sys call %d\n", num); // XXX fault -- cgit v1.2.3