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;
}
|