From: Kenn H. <ke...@us...> - 2001-02-21 00:30:25
|
Update of /cvsroot/linux-vax/kernel-2.4/kernel In directory usw-pr-cvs1:/tmp/cvs-serv23347 Modified Files: context.c Log Message: Wait for keventd thread to start before exiting start_context_thread(). Index: context.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/kernel/context.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- context.c 2001/01/14 16:41:41 1.1.1.1 +++ context.c 2001/02/21 00:31:23 1.2 @@ -28,8 +28,9 @@ static int need_keventd(const char *who) { - if (keventd_running == 0) + if (keventd_running == 0) { printk(KERN_ERR "%s(): keventd has not started\n", who); + } return keventd_running; } @@ -63,7 +64,7 @@ return ret; } -static int context_thread(void *dummy) +static int context_thread(void *sem) { struct task_struct *curtask = current; DECLARE_WAITQUEUE(wait, curtask); @@ -79,6 +80,8 @@ recalc_sigpending(curtask); spin_unlock_irq(&curtask->sigmask_lock); + up((struct semaphore *)sem); + /* Install a handler so SIGCLD is delivered */ sa.sa.sa_handler = SIG_IGN; sa.sa.sa_flags = 0; @@ -148,7 +151,9 @@ int start_context_thread(void) { - kernel_thread(context_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + DECLARE_MUTEX_LOCKED(sem); + kernel_thread(context_thread, &sem, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + down(&sem); return 0; } |