diff options
Diffstat (limited to 'include/linux/init_task.h')
-rw-r--r-- | include/linux/init_task.h | 51 |
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 | |||
15 | extern struct files_struct init_files; | 22 | extern struct files_struct init_files; |
16 | extern struct fs_struct init_fs; | 23 | extern 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 | ||
34 | extern struct nsproxy init_nsproxy; | 52 | extern 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, \ |