diff options
author | rtm <rtm> | 2006-08-13 02:12:44 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-13 02:12:44 +0000 |
commit | 9e5970d596d7b1634200d50e96130886f593cede (patch) | |
tree | 994e11ccb4a3a33c1963a8f1fb3f7464d3d9e363 /syscall.c | |
parent | 05e975511bcf7f33955208319655dbfc687a7b0c (diff) | |
download | xv6-labs-9e5970d596d7b1634200d50e96130886f593cede.tar.gz xv6-labs-9e5970d596d7b1634200d50e96130886f593cede.tar.bz2 xv6-labs-9e5970d596d7b1634200d50e96130886f593cede.zip |
link()
Diffstat (limited to 'syscall.c')
-rw-r--r-- | syscall.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -303,7 +303,6 @@ sys_unlink(void) return r; } - int sys_fstat(void) { @@ -326,6 +325,21 @@ sys_fstat(void) } int +sys_link(void) +{ + struct proc *cp = curproc[cpu()]; + uint name1, name2; + int r; + + if(fetcharg(0, &name1) < 0 || checkstring(name1) < 0) + return -1; + if(fetcharg(1, &name2) < 0 || checkstring(name2) < 0) + return -1; + r = link(cp->mem + name1, cp->mem + name2); + return r; +} + +int sys_exec(void) { struct proc *cp = curproc[cpu()]; @@ -543,6 +557,9 @@ syscall(void) case SYS_fstat: ret = sys_fstat(); break; + case SYS_link: + ret = sys_link(); + break; default: cprintf("unknown sys call %d\n", num); // XXX fault |