Commit 074127b5 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] CLONE_STOPPED

From: Ulrich Drepper <drepper@redhat.com>

CLONE_STOPPED: start a thread in a stopped state.  Required for NTPL.
parent 7b17636c
......@@ -52,6 +52,7 @@ struct exec_domain;
#define CLONE_DETACHED 0x00400000 /* parent wants no child-exit signal */
#define CLONE_UNTRACED 0x00800000 /* set if the tracing process can't force CLONE_PTRACE on this clone */
#define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */
#define CLONE_STOPPED 0x02000000 /* Start in stopped state */
/*
* List of flags we want to share for kernel threads,
......
......@@ -1076,7 +1076,7 @@ long do_fork(unsigned long clone_flags,
init_completion(&vfork);
}
if (p->ptrace & PT_PTRACED) {
if ((p->ptrace & PT_PTRACED) || (clone_flags & CLONE_STOPPED)) {
/*
* We'll start up with an immediate SIGSTOP.
*/
......@@ -1084,7 +1084,9 @@ long do_fork(unsigned long clone_flags,
set_tsk_thread_flag(p, TIF_SIGPENDING);
}
wake_up_forked_process(p); /* do this last */
p->state = TASK_STOPPED;
if (!(clone_flags & CLONE_STOPPED))
wake_up_forked_process(p); /* do this last */
++total_forks;
if (unlikely (trace)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment