aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2008-07-25 04:47:37 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-25 13:53:39 -0400
commit7b34e4283c685f5cc6ba6d30e939906eee0d4bcf (patch)
tree6822edd5c63db79e97b8c5379a18a058bc5405ff /include
parent3d749b9e676b26584a47e75c235aa6f69d0697ae (diff)
introduce PF_KTHREAD flag
Introduce the new PF_KTHREAD flag to mark the kernel threads. It is set by INIT_TASK() and copied to the forked childs (we could set it in kthreadd() along with PF_NOFREEZE instead). daemonize() was changed as well. In that case testing of PF_KTHREAD is racy, but daemonize() is hopeless anyway. This flag is cleared in do_execve(), before search_binary_handler(). Probably not the best place, we can do this in exec_mmap() or in start_thread(), or clear it along with PF_FORKNOEXEC. But I think this doesn't matter in practice, and if do_execve() fails kthread should die soon. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Cc: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/init_task.h2
-rw-r--r--include/linux/sched.h1
2 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index 93c45acf249..021d8e720c7 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -122,7 +122,7 @@ extern struct group_info init_groups;
122 .state = 0, \ 122 .state = 0, \
123 .stack = &init_thread_info, \ 123 .stack = &init_thread_info, \
124 .usage = ATOMIC_INIT(2), \ 124 .usage = ATOMIC_INIT(2), \
125 .flags = 0, \ 125 .flags = PF_KTHREAD, \
126 .lock_depth = -1, \ 126 .lock_depth = -1, \
127 .prio = MAX_PRIO-20, \ 127 .prio = MAX_PRIO-20, \
128 .static_prio = MAX_PRIO-20, \ 128 .static_prio = MAX_PRIO-20, \
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 79e749dbf81..eec64a4adb9 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1483,6 +1483,7 @@ static inline void put_task_struct(struct task_struct *t)
1483#define PF_EXITING 0x00000004 /* getting shut down */ 1483#define PF_EXITING 0x00000004 /* getting shut down */
1484#define PF_EXITPIDONE 0x00000008 /* pi exit done on shut down */ 1484#define PF_EXITPIDONE 0x00000008 /* pi exit done on shut down */
1485#define PF_VCPU 0x00000010 /* I'm a virtual CPU */ 1485#define PF_VCPU 0x00000010 /* I'm a virtual CPU */
1486#define PF_KTHREAD 0x00000020 /* I am a kernel thread */
1486#define PF_FORKNOEXEC 0x00000040 /* forked but didn't exec */ 1487#define PF_FORKNOEXEC 0x00000040 /* forked but didn't exec */
1487#define PF_SUPERPRIV 0x00000100 /* used super-user privileges */ 1488#define PF_SUPERPRIV 0x00000100 /* used super-user privileges */
1488#define PF_DUMPCORE 0x00000200 /* dumped core */ 1489#define PF_DUMPCORE 0x00000200 /* dumped core */