summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs.c2
-rw-r--r--fstests.c8
-rw-r--r--proc.c4
-rw-r--r--proc.h5
-rw-r--r--sh.c2
-rw-r--r--syscall.c3
6 files changed, 12 insertions, 12 deletions
diff --git a/fs.c b/fs.c
index 6c552e6..80f522b 100644
--- a/fs.c
+++ b/fs.c
@@ -632,7 +632,7 @@ unlink(char *cp)
memset(&de, 0, sizeof(de));
if(writei(dp, (char*)&de, off, sizeof(de)) != sizeof(de))
panic("unlink dir write");
-
+
iupdate(dp);
iput(dp);
diff --git a/fstests.c b/fstests.c
index ac9478e..3967f13 100644
--- a/fstests.c
+++ b/fstests.c
@@ -150,8 +150,8 @@ createdelete()
}
if(pid)
- wait();
- else
+ exit();
+ else
exit();
for(i = 0; i < n; i++){
@@ -160,8 +160,10 @@ createdelete()
fd = open(name, 0);
if((i == 0 || i >= n/2) && fd < 0){
printf(1, "oops createdelete %s didn't exist\n", name);
+ exit();
} else if((i >= 1 && i < n/2) && fd >= 0){
printf(1, "oops createdelete %s did exist\n", name);
+ exit();
}
if(fd >= 0)
close(fd);
@@ -171,8 +173,10 @@ createdelete()
fd = open(name, 0);
if((i == 0 || i >= n/2) && fd < 0){
printf(1, "oops createdelete %s didn't exist\n", name);
+ exit();
} else if((i >= 1 && i < n/2) && fd >= 0){
printf(1, "oops createdelete %s did exist\n", name);
+ exit();
}
if(fd >= 0)
close(fd);
diff --git a/proc.c b/proc.c
index 01f6aa4..eca5e97 100644
--- a/proc.c
+++ b/proc.c
@@ -337,6 +337,9 @@ proc_exit(void)
cp->fds[fd] = 0;
}
}
+
+ idecref(cp->cwd);
+ cp->cwd = 0;
acquire(&proc_table_lock);
@@ -351,6 +354,7 @@ proc_exit(void)
p->ppid = 1;
// Jump into the scheduler, never to return.
+ cp->killed = 0;
cp->state = ZOMBIE;
sched();
panic("zombie exit");
diff --git a/proc.h b/proc.h
index 5689bbc..36b07a5 100644
--- a/proc.h
+++ b/proc.h
@@ -46,12 +46,7 @@ struct proc{
int killed;
struct fd *fds[NOFILE];
struct inode *cwd;
-
- uint esp; // kernel stack pointer
- uint ebp; // kernel frame pointer
-
struct jmpbuf jmpbuf;
-
struct trapframe *tf; // points into kstack, used to find user regs
};
diff --git a/sh.c b/sh.c
index 2f2d297..5da556e 100644
--- a/sh.c
+++ b/sh.c
@@ -22,7 +22,7 @@ char *argv[MAXARGS];
char argv0buf[BUFSIZ];
int argc;
-int debug = 1;
+int debug = 0;
int parse(char *s);
void runcmd(void);
diff --git a/syscall.c b/syscall.c
index 5a7a60d..2918bb0 100644
--- a/syscall.c
+++ b/syscall.c
@@ -113,7 +113,6 @@ sys_pipe(void)
return 0;
oops:
- cprintf("sys_pipe failed\n");
if(rfd)
fd_close(rfd);
if(wfd)
@@ -602,14 +601,12 @@ sys_exec(void)
return 0;
bad:
- cprintf("exec failed early\n");
if(mem)
kfree(mem, sz);
iput(ip);
return -1;
bad2:
- cprintf("exec failed late\n");
iput(ip);
proc_exit();
return 0;