fix wait bug in init
This commit is contained in:
parent
f8f7fcbebd
commit
39c84ccf48
4
BUGS
4
BUGS
|
@ -11,10 +11,6 @@ main.c:
|
||||||
|
|
||||||
cpus[0] -> cpus[bcpu]
|
cpus[0] -> cpus[bcpu]
|
||||||
|
|
||||||
init.c:
|
|
||||||
should while(wait() >= 0);
|
|
||||||
not just wait();
|
|
||||||
|
|
||||||
proc.c:
|
proc.c:
|
||||||
comment at top of scheduler() should say
|
comment at top of scheduler() should say
|
||||||
via longjmp back to the scheduler
|
via longjmp back to the scheduler
|
||||||
|
|
7
init.c
7
init.c
|
@ -11,7 +11,7 @@ char *sh_args[] = { "sh", 0 };
|
||||||
int
|
int
|
||||||
main(void)
|
main(void)
|
||||||
{
|
{
|
||||||
int pid;
|
int pid, wpid;
|
||||||
|
|
||||||
if(open("console", O_RDWR) < 0){
|
if(open("console", O_RDWR) < 0){
|
||||||
mknod("console", T_DEV, 1, 1);
|
mknod("console", T_DEV, 1, 1);
|
||||||
|
@ -21,6 +21,7 @@ main(void)
|
||||||
dup(0); // stderr
|
dup(0); // stderr
|
||||||
|
|
||||||
for(;;){
|
for(;;){
|
||||||
|
puts("init: starting sh\n");
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if(pid < 0){
|
if(pid < 0){
|
||||||
puts("init: fork failed\n");
|
puts("init: fork failed\n");
|
||||||
|
@ -30,8 +31,8 @@ main(void)
|
||||||
exec("sh", sh_args);
|
exec("sh", sh_args);
|
||||||
puts("init: exec sh failed\n");
|
puts("init: exec sh failed\n");
|
||||||
exit();
|
exit();
|
||||||
} else {
|
|
||||||
wait();
|
|
||||||
}
|
}
|
||||||
|
while((wpid=wait()) >= 0 && wpid != pid)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue