aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/init_task.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/init_task.h')
-rw-r--r--include/linux/init_task.h51
1 files changed, 36 insertions, 15 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index 1f43fa56f600..580f70c02391 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -12,9 +12,24 @@
12#include <linux/securebits.h> 12#include <linux/securebits.h>
13#include <net/net_namespace.h> 13#include <net/net_namespace.h>
14 14
15#ifdef CONFIG_SMP
16# define INIT_PUSHABLE_TASKS(tsk) \
17 .pushable_tasks = PLIST_NODE_INIT(tsk.pushable_tasks, MAX_PRIO),
18#else
19# define INIT_PUSHABLE_TASKS(tsk)
20#endif
21
15extern struct files_struct init_files; 22extern struct files_struct init_files;
16extern struct fs_struct init_fs; 23extern struct fs_struct init_fs;
17 24
25#ifdef CONFIG_CGROUPS
26#define INIT_THREADGROUP_FORK_LOCK(sig) \
27 .threadgroup_fork_lock = \
28 __RWSEM_INITIALIZER(sig.threadgroup_fork_lock),
29#else
30#define INIT_THREADGROUP_FORK_LOCK(sig)
31#endif
32
18#define INIT_SIGNALS(sig) { \ 33#define INIT_SIGNALS(sig) { \
19 .nr_threads = 1, \ 34 .nr_threads = 1, \
20 .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ 35 .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\
@@ -29,6 +44,9 @@ extern struct fs_struct init_fs;
29 .running = 0, \ 44 .running = 0, \
30 .lock = __SPIN_LOCK_UNLOCKED(sig.cputimer.lock), \ 45 .lock = __SPIN_LOCK_UNLOCKED(sig.cputimer.lock), \
31 }, \ 46 }, \
47 .cred_guard_mutex = \
48 __MUTEX_INITIALIZER(sig.cred_guard_mutex), \
49 INIT_THREADGROUP_FORK_LOCK(sig) \
32} 50}
33 51
34extern struct nsproxy init_nsproxy; 52extern struct nsproxy init_nsproxy;
@@ -74,19 +92,25 @@ extern struct group_info init_groups;
74#define INIT_IDS 92#define INIT_IDS
75#endif 93#endif
76 94
77/* 95#ifdef CONFIG_RCU_BOOST
78 * Because of the reduced scope of CAP_SETPCAP when filesystem 96#define INIT_TASK_RCU_BOOST() \
79 * capabilities are in effect, it is safe to allow CAP_SETPCAP to 97 .rcu_boost_mutex = NULL,
80 * be available in the default configuration. 98#else
81 */ 99#define INIT_TASK_RCU_BOOST()
82# define CAP_INIT_BSET CAP_FULL_SET 100#endif
83
84#ifdef CONFIG_TREE_PREEMPT_RCU 101#ifdef CONFIG_TREE_PREEMPT_RCU
102#define INIT_TASK_RCU_TREE_PREEMPT() \
103 .rcu_blocked_node = NULL,
104#else
105#define INIT_TASK_RCU_TREE_PREEMPT(tsk)
106#endif
107#ifdef CONFIG_PREEMPT_RCU
85#define INIT_TASK_RCU_PREEMPT(tsk) \ 108#define INIT_TASK_RCU_PREEMPT(tsk) \
86 .rcu_read_lock_nesting = 0, \ 109 .rcu_read_lock_nesting = 0, \
87 .rcu_read_unlock_special = 0, \ 110 .rcu_read_unlock_special = 0, \
88 .rcu_blocked_node = NULL, \ 111 .rcu_node_entry = LIST_HEAD_INIT(tsk.rcu_node_entry), \
89 .rcu_node_entry = LIST_HEAD_INIT(tsk.rcu_node_entry), 112 INIT_TASK_RCU_TREE_PREEMPT() \
113 INIT_TASK_RCU_BOOST()
90#else 114#else
91#define INIT_TASK_RCU_PREEMPT(tsk) 115#define INIT_TASK_RCU_PREEMPT(tsk)
92#endif 116#endif
@@ -112,7 +136,6 @@ extern struct cred init_cred;
112 .stack = &init_thread_info, \ 136 .stack = &init_thread_info, \
113 .usage = ATOMIC_INIT(2), \ 137 .usage = ATOMIC_INIT(2), \
114 .flags = PF_KTHREAD, \ 138 .flags = PF_KTHREAD, \
115 .lock_depth = -1, \
116 .prio = MAX_PRIO-20, \ 139 .prio = MAX_PRIO-20, \
117 .static_prio = MAX_PRIO-20, \ 140 .static_prio = MAX_PRIO-20, \
118 .normal_prio = MAX_PRIO-20, \ 141 .normal_prio = MAX_PRIO-20, \
@@ -129,7 +152,7 @@ extern struct cred init_cred;
129 .nr_cpus_allowed = NR_CPUS, \ 152 .nr_cpus_allowed = NR_CPUS, \
130 }, \ 153 }, \
131 .tasks = LIST_HEAD_INIT(tsk.tasks), \ 154 .tasks = LIST_HEAD_INIT(tsk.tasks), \
132 .pushable_tasks = PLIST_NODE_INIT(tsk.pushable_tasks, MAX_PRIO), \ 155 INIT_PUSHABLE_TASKS(tsk) \
133 .ptraced = LIST_HEAD_INIT(tsk.ptraced), \ 156 .ptraced = LIST_HEAD_INIT(tsk.ptraced), \
134 .ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \ 157 .ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \
135 .real_parent = &tsk, \ 158 .real_parent = &tsk, \
@@ -137,10 +160,8 @@ extern struct cred init_cred;
137 .children = LIST_HEAD_INIT(tsk.children), \ 160 .children = LIST_HEAD_INIT(tsk.children), \
138 .sibling = LIST_HEAD_INIT(tsk.sibling), \ 161 .sibling = LIST_HEAD_INIT(tsk.sibling), \
139 .group_leader = &tsk, \ 162 .group_leader = &tsk, \
140 .real_cred = &init_cred, \ 163 RCU_INIT_POINTER(.real_cred, &init_cred), \
141 .cred = &init_cred, \ 164 RCU_INIT_POINTER(.cred, &init_cred), \
142 .cred_guard_mutex = \
143 __MUTEX_INITIALIZER(tsk.cred_guard_mutex), \
144 .comm = "swapper", \ 165 .comm = "swapper", \
145 .thread = INIT_THREAD, \ 166 .thread = INIT_THREAD, \
146 .fs = &init_fs, \ 167 .fs = &init_fs, \