summaryrefslogtreecommitdiff
path: root/fd.c
diff options
context:
space:
mode:
authorkaashoek <kaashoek>2006-08-10 01:28:57 +0000
committerkaashoek <kaashoek>2006-08-10 01:28:57 +0000
commit28d9ef04ddaa4cf32f3c63c976afdc535a36db98 (patch)
tree3ffd0e079e8fd5dab4e00a37fb657087ed7da720 /fd.c
parent939f9edeac042b2678bd2943a32822fb2eed75b4 (diff)
downloadxv6-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 'fd.c')
-rw-r--r--fd.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fd.c b/fd.c
index 47b0f20..983497f 100644
--- a/fd.c
+++ b/fd.c
@@ -59,7 +59,13 @@ fd_write(struct fd *fd, char *addr, int n)
if(fd->type == FD_PIPE){
return pipe_write(fd->pipe, addr, n);
} else if (fd->type == FD_FILE) {
- return writei (fd->ip, addr, n);
+ ilock(fd->ip);
+ int r = writei (fd->ip, addr, fd->off, n);
+ if (r > 0) {
+ fd->off += r;
+ }
+ iunlock(fd->ip);
+ return r;
} else {
panic("fd_write");
return -1;