Skip to content

Commit

Permalink
clear killed flag in exit
Browse files Browse the repository at this point in the history
idecref cwd in exit
  • Loading branch information
rtm committed Aug 29, 2006
1 parent dfcc5b9 commit 7a37578
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 12 deletions.
2 changes: 1 addition & 1 deletion fs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
8 changes: 6 additions & 2 deletions fstests.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ createdelete()
}

if(pid)
wait();
else
exit();
else
exit();

for(i = 0; i < n; i++){
Expand All @@ -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);
Expand All @@ -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);
Expand Down
4 changes: 4 additions & 0 deletions proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,9 @@ proc_exit(void)
cp->fds[fd] = 0;
}
}

idecref(cp->cwd);
cp->cwd = 0;

acquire(&proc_table_lock);

Expand All @@ -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");
Expand Down
5 changes: 0 additions & 5 deletions proc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
};

Expand Down
2 changes: 1 addition & 1 deletion sh.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
3 changes: 0 additions & 3 deletions syscall.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ sys_pipe(void)
return 0;

oops:
cprintf("sys_pipe failed\n");
if(rfd)
fd_close(rfd);
if(wfd)
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 7a37578

Please sign in to comment.