patch-2.4.13 linux/kernel/context.c
Next file: linux/kernel/exit.c
Previous file: linux/ipc/shm.c
Back to the patch index
Back to the overall index
- Lines: 38
- Date:
Thu Oct 11 11:17:22 2001
- Orig file:
v2.4.12/linux/kernel/context.c
- Orig date:
Sat May 19 17:47:55 2001
diff -u --recursive --new-file v2.4.12/linux/kernel/context.c linux/kernel/context.c
@@ -19,6 +19,7 @@
#include <linux/init.h>
#include <linux/unistd.h>
#include <linux/signal.h>
+#include <linux/completion.h>
static DECLARE_TASK_QUEUE(tq_context);
static DECLARE_WAIT_QUEUE_HEAD(context_task_wq);
@@ -63,7 +64,7 @@
return ret;
}
-static int context_thread(void *dummy)
+static int context_thread(void *startup)
{
struct task_struct *curtask = current;
DECLARE_WAITQUEUE(wait, curtask);
@@ -79,6 +80,8 @@
recalc_sigpending(curtask);
spin_unlock_irq(&curtask->sigmask_lock);
+ complete((struct completion *)startup);
+
/* Install a handler so SIGCLD is delivered */
sa.sa.sa_handler = SIG_IGN;
sa.sa.sa_flags = 0;
@@ -150,7 +153,10 @@
int start_context_thread(void)
{
- kernel_thread(context_thread, NULL, CLONE_FS | CLONE_FILES);
+ static struct completion startup __initdata = COMPLETION_INITIALIZER(startup);
+
+ kernel_thread(context_thread, &startup, CLONE_FS | CLONE_FILES);
+ wait_for_completion(&startup);
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)