| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _LINUX__INIT_TASK_H | 
 | 2 | #define _LINUX__INIT_TASK_H | 
 | 3 |  | 
| Dipankar Sarma | ab2af1f | 2005-09-09 13:04:13 -0700 | [diff] [blame] | 4 | #include <linux/rcupdate.h> | 
| Ingo Molnar | de30a2b | 2006-07-03 00:24:42 -0700 | [diff] [blame] | 5 | #include <linux/irqflags.h> | 
| Serge E. Hallyn | 4865ecf | 2006-10-02 02:18:14 -0700 | [diff] [blame] | 6 | #include <linux/utsname.h> | 
| Ingo Molnar | fbb9ce9 | 2006-07-03 00:24:50 -0700 | [diff] [blame] | 7 | #include <linux/lockdep.h> | 
| Steven Rostedt | 5ac9f62 | 2009-03-25 20:55:00 -0400 | [diff] [blame] | 8 | #include <linux/ftrace.h> | 
| Kirill Korotaev | 73ea413 | 2006-10-02 02:18:20 -0700 | [diff] [blame] | 9 | #include <linux/ipc.h> | 
| Cedric Le Goater | 9a575a9 | 2006-12-08 02:37:59 -0800 | [diff] [blame] | 10 | #include <linux/pid_namespace.h> | 
| Cedric Le Goater | acce292 | 2007-07-15 23:40:59 -0700 | [diff] [blame] | 11 | #include <linux/user_namespace.h> | 
| Andrew G. Morgan | 3898b1b | 2008-04-28 02:13:40 -0700 | [diff] [blame] | 12 | #include <linux/securebits.h> | 
| Eric W. Biederman | 772698f | 2007-09-12 11:55:17 +0200 | [diff] [blame] | 13 | #include <net/net_namespace.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 |  | 
| Dario Faggioli | 806c09a | 2010-11-30 19:51:33 +0100 | [diff] [blame] | 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 |  | 
| Al Viro | f52111b | 2008-05-08 18:19:16 -0400 | [diff] [blame] | 22 | extern struct files_struct init_files; | 
| Al Viro | 18d8fda | 2008-12-26 00:35:37 -0500 | [diff] [blame] | 23 | extern struct fs_struct init_fs; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 24 |  | 
| Ben Blum | 4714d1d | 2011-05-26 16:25:18 -0700 | [diff] [blame] | 25 | #ifdef CONFIG_CGROUPS | 
| Tejun Heo | 257058a | 2011-12-12 18:12:21 -0800 | [diff] [blame] | 26 | #define INIT_GROUP_RWSEM(sig)						\ | 
 | 27 | 	.group_rwsem = __RWSEM_INITIALIZER(sig.group_rwsem), | 
| Ben Blum | 4714d1d | 2011-05-26 16:25:18 -0700 | [diff] [blame] | 28 | #else | 
| Tejun Heo | 257058a | 2011-12-12 18:12:21 -0800 | [diff] [blame] | 29 | #define INIT_GROUP_RWSEM(sig) | 
| Ben Blum | 4714d1d | 2011-05-26 16:25:18 -0700 | [diff] [blame] | 30 | #endif | 
 | 31 |  | 
| Mel Gorman | cc9a6c8 | 2012-03-21 16:34:11 -0700 | [diff] [blame] | 32 | #ifdef CONFIG_CPUSETS | 
 | 33 | #define INIT_CPUSET_SEQ							\ | 
 | 34 | 	.mems_allowed_seq = SEQCNT_ZERO, | 
 | 35 | #else | 
 | 36 | #define INIT_CPUSET_SEQ | 
 | 37 | #endif | 
 | 38 |  | 
| Cedric Le Goater | 1ec320a | 2006-12-08 02:37:55 -0800 | [diff] [blame] | 39 | #define INIT_SIGNALS(sig) {						\ | 
| Oleg Nesterov | b3ac022 | 2010-05-26 14:43:24 -0700 | [diff] [blame] | 40 | 	.nr_threads	= 1,						\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 41 | 	.wait_chldexit	= __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ | 
| Cedric Le Goater | 1ec320a | 2006-12-08 02:37:55 -0800 | [diff] [blame] | 42 | 	.shared_pending	= { 						\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 43 | 		.list = LIST_HEAD_INIT(sig.shared_pending.list),	\ | 
| Cedric Le Goater | 1ec320a | 2006-12-08 02:37:55 -0800 | [diff] [blame] | 44 | 		.signal =  {{0}}},					\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 45 | 	.posix_timers	 = LIST_HEAD_INIT(sig.posix_timers),		\ | 
 | 46 | 	.cpu_timers	= INIT_CPU_TIMERS(sig.cpu_timers),		\ | 
 | 47 | 	.rlim		= INIT_RLIMITS,					\ | 
| Peter Zijlstra | 4cd4c1b | 2009-02-05 12:24:16 +0100 | [diff] [blame] | 48 | 	.cputimer	= { 						\ | 
 | 49 | 		.cputime = INIT_CPUTIME,				\ | 
 | 50 | 		.running = 0,						\ | 
| Thomas Gleixner | ee30a7b | 2009-07-25 18:56:56 +0200 | [diff] [blame] | 51 | 		.lock = __RAW_SPIN_LOCK_UNLOCKED(sig.cputimer.lock),	\ | 
| Peter Zijlstra | 4cd4c1b | 2009-02-05 12:24:16 +0100 | [diff] [blame] | 52 | 	},								\ | 
| KOSAKI Motohiro | 9b1bf12 | 2010-10-27 15:34:08 -0700 | [diff] [blame] | 53 | 	.cred_guard_mutex =						\ | 
 | 54 | 		 __MUTEX_INITIALIZER(sig.cred_guard_mutex),		\ | 
| Tejun Heo | 257058a | 2011-12-12 18:12:21 -0800 | [diff] [blame] | 55 | 	INIT_GROUP_RWSEM(sig)						\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 56 | } | 
 | 57 |  | 
| Serge E. Hallyn | ab51601 | 2006-10-02 02:18:06 -0700 | [diff] [blame] | 58 | extern struct nsproxy init_nsproxy; | 
| Serge E. Hallyn | ab51601 | 2006-10-02 02:18:06 -0700 | [diff] [blame] | 59 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 60 | #define INIT_SIGHAND(sighand) {						\ | 
 | 61 | 	.count		= ATOMIC_INIT(1), 				\ | 
| Oleg Nesterov | 0a14a13 | 2010-05-26 14:44:12 -0700 | [diff] [blame] | 62 | 	.action		= { { { .sa_handler = SIG_DFL, } }, },		\ | 
| Ingo Molnar | e4d9191 | 2006-07-03 00:24:34 -0700 | [diff] [blame] | 63 | 	.siglock	= __SPIN_LOCK_UNLOCKED(sighand.siglock),	\ | 
| Davide Libenzi | b8fceee | 2007-09-20 12:40:16 -0700 | [diff] [blame] | 64 | 	.signalfd_wqh	= __WAIT_QUEUE_HEAD_INITIALIZER(sighand.signalfd_wqh),	\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 65 | } | 
 | 66 |  | 
 | 67 | extern struct group_info init_groups; | 
 | 68 |  | 
| Sukadev Bhattiprolu | 820e45d | 2007-05-10 22:23:00 -0700 | [diff] [blame] | 69 | #define INIT_STRUCT_PID {						\ | 
 | 70 | 	.count 		= ATOMIC_INIT(1),				\ | 
| Sukadev Bhattiprolu | 820e45d | 2007-05-10 22:23:00 -0700 | [diff] [blame] | 71 | 	.tasks		= {						\ | 
| Oleg Nesterov | f200114 | 2010-05-26 14:44:10 -0700 | [diff] [blame] | 72 | 		{ .first = NULL },					\ | 
 | 73 | 		{ .first = NULL },					\ | 
 | 74 | 		{ .first = NULL },					\ | 
| Sukadev Bhattiprolu | 820e45d | 2007-05-10 22:23:00 -0700 | [diff] [blame] | 75 | 	},								\ | 
| Sukadev Bhattiprolu | 4c3f2ea | 2007-10-18 23:40:03 -0700 | [diff] [blame] | 76 | 	.level		= 0,						\ | 
 | 77 | 	.numbers	= { {						\ | 
 | 78 | 		.nr		= 0,					\ | 
 | 79 | 		.ns		= &init_pid_ns,				\ | 
 | 80 | 		.pid_chain	= { .next = NULL, .pprev = NULL },	\ | 
 | 81 | 	}, }								\ | 
| Sukadev Bhattiprolu | 820e45d | 2007-05-10 22:23:00 -0700 | [diff] [blame] | 82 | } | 
 | 83 |  | 
 | 84 | #define INIT_PID_LINK(type) 					\ | 
 | 85 | {								\ | 
 | 86 | 	.node = {						\ | 
 | 87 | 		.next = NULL,					\ | 
| Oleg Nesterov | f200114 | 2010-05-26 14:44:10 -0700 | [diff] [blame] | 88 | 		.pprev = NULL,					\ | 
| Sukadev Bhattiprolu | 820e45d | 2007-05-10 22:23:00 -0700 | [diff] [blame] | 89 | 	},							\ | 
 | 90 | 	.pid = &init_struct_pid,				\ | 
 | 91 | } | 
 | 92 |  | 
| Al Viro | bfef93a | 2008-01-10 04:53:18 -0500 | [diff] [blame] | 93 | #ifdef CONFIG_AUDITSYSCALL | 
 | 94 | #define INIT_IDS \ | 
| Eric Paris | 4746ec5 | 2008-01-08 10:06:53 -0500 | [diff] [blame] | 95 | 	.loginuid = -1, \ | 
 | 96 | 	.sessionid = -1, | 
| Al Viro | bfef93a | 2008-01-10 04:53:18 -0500 | [diff] [blame] | 97 | #else | 
 | 98 | #define INIT_IDS | 
 | 99 | #endif | 
| Serge E. Hallyn | 3b7391d | 2008-02-04 22:29:45 -0800 | [diff] [blame] | 100 |  | 
| Paul E. McKenney | 24278d1 | 2010-09-27 17:25:23 -0700 | [diff] [blame] | 101 | #ifdef CONFIG_RCU_BOOST | 
 | 102 | #define INIT_TASK_RCU_BOOST()						\ | 
 | 103 | 	.rcu_boost_mutex = NULL, | 
 | 104 | #else | 
 | 105 | #define INIT_TASK_RCU_BOOST() | 
 | 106 | #endif | 
| Paul E. McKenney | 6b3ef48 | 2009-08-22 13:56:53 -0700 | [diff] [blame] | 107 | #ifdef CONFIG_TREE_PREEMPT_RCU | 
| Paul E. McKenney | a57eb94 | 2010-06-29 16:49:16 -0700 | [diff] [blame] | 108 | #define INIT_TASK_RCU_TREE_PREEMPT()					\ | 
 | 109 | 	.rcu_blocked_node = NULL, | 
 | 110 | #else | 
 | 111 | #define INIT_TASK_RCU_TREE_PREEMPT(tsk) | 
 | 112 | #endif | 
 | 113 | #ifdef CONFIG_PREEMPT_RCU | 
| Paul E. McKenney | f41d911 | 2009-08-22 13:56:52 -0700 | [diff] [blame] | 114 | #define INIT_TASK_RCU_PREEMPT(tsk)					\ | 
 | 115 | 	.rcu_read_lock_nesting = 0,					\ | 
 | 116 | 	.rcu_read_unlock_special = 0,					\ | 
| Paul E. McKenney | a57eb94 | 2010-06-29 16:49:16 -0700 | [diff] [blame] | 117 | 	.rcu_node_entry = LIST_HEAD_INIT(tsk.rcu_node_entry),		\ | 
| Paul E. McKenney | 24278d1 | 2010-09-27 17:25:23 -0700 | [diff] [blame] | 118 | 	INIT_TASK_RCU_TREE_PREEMPT()					\ | 
 | 119 | 	INIT_TASK_RCU_BOOST() | 
| Paul E. McKenney | f41d911 | 2009-08-22 13:56:52 -0700 | [diff] [blame] | 120 | #else | 
 | 121 | #define INIT_TASK_RCU_PREEMPT(tsk) | 
 | 122 | #endif | 
 | 123 |  | 
| David Howells | b6dff3e | 2008-11-14 10:39:16 +1100 | [diff] [blame] | 124 | extern struct cred init_cred; | 
 | 125 |  | 
| Peter Zijlstra | e194fab | 2012-06-22 13:36:05 +0200 | [diff] [blame] | 126 | extern struct task_group root_task_group; | 
 | 127 |  | 
 | 128 | #ifdef CONFIG_CGROUP_SCHED | 
 | 129 | # define INIT_CGROUP_SCHED(tsk)						\ | 
 | 130 | 	.sched_task_group = &root_task_group, | 
 | 131 | #else | 
 | 132 | # define INIT_CGROUP_SCHED(tsk) | 
 | 133 | #endif | 
 | 134 |  | 
| Ingo Molnar | cdd6c48 | 2009-09-21 12:02:48 +0200 | [diff] [blame] | 135 | #ifdef CONFIG_PERF_EVENTS | 
| Peter Zijlstra | e194fab | 2012-06-22 13:36:05 +0200 | [diff] [blame] | 136 | # define INIT_PERF_EVENTS(tsk)						\ | 
| Ingo Molnar | cdd6c48 | 2009-09-21 12:02:48 +0200 | [diff] [blame] | 137 | 	.perf_event_mutex = 						\ | 
 | 138 | 		 __MUTEX_INITIALIZER(tsk.perf_event_mutex),		\ | 
 | 139 | 	.perf_event_list = LIST_HEAD_INIT(tsk.perf_event_list), | 
| Peter Zijlstra | 082ff5a | 2009-05-23 18:29:00 +0200 | [diff] [blame] | 140 | #else | 
| Ingo Molnar | cdd6c48 | 2009-09-21 12:02:48 +0200 | [diff] [blame] | 141 | # define INIT_PERF_EVENTS(tsk) | 
| Peter Zijlstra | 082ff5a | 2009-05-23 18:29:00 +0200 | [diff] [blame] | 142 | #endif | 
 | 143 |  | 
| Carsten Emde | f1c6f1a | 2011-10-26 23:14:16 +0200 | [diff] [blame] | 144 | #define INIT_TASK_COMM "swapper" | 
 | 145 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 146 | /* | 
 | 147 |  *  INIT_TASK is used to set up the first task table, touch at | 
 | 148 |  * your own risk!. Base=0, limit=0x1fffff (=2MB) | 
 | 149 |  */ | 
 | 150 | #define INIT_TASK(tsk)	\ | 
 | 151 | {									\ | 
 | 152 | 	.state		= 0,						\ | 
| Roman Zippel | f7e4217 | 2007-05-09 02:35:17 -0700 | [diff] [blame] | 153 | 	.stack		= &init_thread_info,				\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 154 | 	.usage		= ATOMIC_INIT(2),				\ | 
| Oleg Nesterov | 7b34e42 | 2008-07-25 01:47:37 -0700 | [diff] [blame] | 155 | 	.flags		= PF_KTHREAD,					\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 156 | 	.prio		= MAX_PRIO-20,					\ | 
 | 157 | 	.static_prio	= MAX_PRIO-20,					\ | 
| Ingo Molnar | b29739f | 2006-06-27 02:54:51 -0700 | [diff] [blame] | 158 | 	.normal_prio	= MAX_PRIO-20,					\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 159 | 	.policy		= SCHED_NORMAL,					\ | 
 | 160 | 	.cpus_allowed	= CPU_MASK_ALL,					\ | 
 | 161 | 	.mm		= NULL,						\ | 
 | 162 | 	.active_mm	= &init_mm,					\ | 
| Peter Zijlstra | 4a55bd5 | 2008-04-19 19:45:00 +0200 | [diff] [blame] | 163 | 	.se		= {						\ | 
 | 164 | 		.group_node 	= LIST_HEAD_INIT(tsk.se.group_node),	\ | 
 | 165 | 	},								\ | 
| Peter Zijlstra | fa71706 | 2008-01-25 21:08:27 +0100 | [diff] [blame] | 166 | 	.rt		= {						\ | 
 | 167 | 		.run_list	= LIST_HEAD_INIT(tsk.rt.run_list),	\ | 
| Hiroshi Shimamoto | de5bdff | 2012-02-16 14:52:21 +0900 | [diff] [blame] | 168 | 		.time_slice	= RR_TIMESLICE,				\ | 
| Peter Zijlstra | 6f505b1 | 2008-01-25 21:08:30 +0100 | [diff] [blame] | 169 | 		.nr_cpus_allowed = NR_CPUS,				\ | 
 | 170 | 	},								\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 171 | 	.tasks		= LIST_HEAD_INIT(tsk.tasks),			\ | 
| Dario Faggioli | 806c09a | 2010-11-30 19:51:33 +0100 | [diff] [blame] | 172 | 	INIT_PUSHABLE_TASKS(tsk)					\ | 
| Peter Zijlstra | e194fab | 2012-06-22 13:36:05 +0200 | [diff] [blame] | 173 | 	INIT_CGROUP_SCHED(tsk)						\ | 
| Roland McGrath | f470021 | 2008-03-24 18:36:23 -0700 | [diff] [blame] | 174 | 	.ptraced	= LIST_HEAD_INIT(tsk.ptraced),			\ | 
 | 175 | 	.ptrace_entry	= LIST_HEAD_INIT(tsk.ptrace_entry),		\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 176 | 	.real_parent	= &tsk,						\ | 
 | 177 | 	.parent		= &tsk,						\ | 
 | 178 | 	.children	= LIST_HEAD_INIT(tsk.children),			\ | 
 | 179 | 	.sibling	= LIST_HEAD_INIT(tsk.sibling),			\ | 
 | 180 | 	.group_leader	= &tsk,						\ | 
| Arnd Bergmann | 4d2deb4 | 2010-02-24 20:01:56 +0100 | [diff] [blame] | 181 | 	RCU_INIT_POINTER(.real_cred, &init_cred),			\ | 
 | 182 | 	RCU_INIT_POINTER(.cred, &init_cred),				\ | 
| Carsten Emde | f1c6f1a | 2011-10-26 23:14:16 +0200 | [diff] [blame] | 183 | 	.comm		= INIT_TASK_COMM,				\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 184 | 	.thread		= INIT_THREAD,					\ | 
 | 185 | 	.fs		= &init_fs,					\ | 
 | 186 | 	.files		= &init_files,					\ | 
 | 187 | 	.signal		= &init_signals,				\ | 
 | 188 | 	.sighand	= &init_sighand,				\ | 
| Serge E. Hallyn | ab51601 | 2006-10-02 02:18:06 -0700 | [diff] [blame] | 189 | 	.nsproxy	= &init_nsproxy,				\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 190 | 	.pending	= {						\ | 
 | 191 | 		.list = LIST_HEAD_INIT(tsk.pending.list),		\ | 
 | 192 | 		.signal = {{0}}},					\ | 
 | 193 | 	.blocked	= {{0}},					\ | 
| Ingo Molnar | e4d9191 | 2006-07-03 00:24:34 -0700 | [diff] [blame] | 194 | 	.alloc_lock	= __SPIN_LOCK_UNLOCKED(tsk.alloc_lock),		\ | 
| Linus Torvalds | b6e3224 | 2009-12-17 13:23:24 -0800 | [diff] [blame] | 195 | 	.journal_info	= NULL,						\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 196 | 	.cpu_timers	= INIT_CPU_TIMERS(tsk.cpu_timers),		\ | 
| Thomas Gleixner | 1d61548 | 2009-11-17 14:54:03 +0100 | [diff] [blame] | 197 | 	.pi_lock	= __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock),	\ | 
| Arjan van de Ven | 6976675 | 2008-09-01 15:52:40 -0700 | [diff] [blame] | 198 | 	.timer_slack_ns = 50000, /* 50 usec default slack */		\ | 
| Sukadev Bhattiprolu | 820e45d | 2007-05-10 22:23:00 -0700 | [diff] [blame] | 199 | 	.pids = {							\ | 
 | 200 | 		[PIDTYPE_PID]  = INIT_PID_LINK(PIDTYPE_PID),		\ | 
 | 201 | 		[PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID),		\ | 
 | 202 | 		[PIDTYPE_SID]  = INIT_PID_LINK(PIDTYPE_SID),		\ | 
 | 203 | 	},								\ | 
| Oleg Nesterov | fa2755e | 2010-05-26 14:44:08 -0700 | [diff] [blame] | 204 | 	.thread_group	= LIST_HEAD_INIT(tsk.thread_group),		\ | 
| Al Viro | bfef93a | 2008-01-10 04:53:18 -0500 | [diff] [blame] | 205 | 	INIT_IDS							\ | 
| Ingo Molnar | cdd6c48 | 2009-09-21 12:02:48 +0200 | [diff] [blame] | 206 | 	INIT_PERF_EVENTS(tsk)						\ | 
| Ingo Molnar | de30a2b | 2006-07-03 00:24:42 -0700 | [diff] [blame] | 207 | 	INIT_TRACE_IRQFLAGS						\ | 
| Ingo Molnar | fbb9ce9 | 2006-07-03 00:24:50 -0700 | [diff] [blame] | 208 | 	INIT_LOCKDEP							\ | 
| Steven Rostedt | 5ac9f62 | 2009-03-25 20:55:00 -0400 | [diff] [blame] | 209 | 	INIT_FTRACE_GRAPH						\ | 
| Steven Rostedt | 261842b | 2009-04-16 21:41:52 -0400 | [diff] [blame] | 210 | 	INIT_TRACE_RECURSION						\ | 
| Paul E. McKenney | f41d911 | 2009-08-22 13:56:52 -0700 | [diff] [blame] | 211 | 	INIT_TASK_RCU_PREEMPT(tsk)					\ | 
| Mel Gorman | cc9a6c8 | 2012-03-21 16:34:11 -0700 | [diff] [blame] | 212 | 	INIT_CPUSET_SEQ							\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 213 | } | 
 | 214 |  | 
 | 215 |  | 
 | 216 | #define INIT_CPU_TIMERS(cpu_timers)					\ | 
 | 217 | {									\ | 
 | 218 | 	LIST_HEAD_INIT(cpu_timers[0]),					\ | 
 | 219 | 	LIST_HEAD_INIT(cpu_timers[1]),					\ | 
 | 220 | 	LIST_HEAD_INIT(cpu_timers[2]),					\ | 
 | 221 | } | 
 | 222 |  | 
| Tim Abbott | 857ecee | 2009-06-23 19:59:36 -0400 | [diff] [blame] | 223 | /* Attach to the init_task data structure for proper alignment */ | 
| Tim Abbott | 2af7687 | 2010-02-20 01:03:35 +0100 | [diff] [blame] | 224 | #define __init_task_data __attribute__((__section__(".data..init_task"))) | 
| Tim Abbott | 857ecee | 2009-06-23 19:59:36 -0400 | [diff] [blame] | 225 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 226 |  | 
 | 227 | #endif |