forked from mirrors/linux
		
	Expand INIT_TASK() in init/init_task.c and remove
It's no longer necessary to have an INIT_TASK() macro, and this can be expanded into the one place it is now used and removed. Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: Tony Luck <tony.luck@intel.com> Tested-by: Will Deacon <will.deacon@arm.com> (arm64) Tested-by: Palmer Dabbelt <palmer@sifive.com> Acked-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
		
							parent
							
								
									0500871f21
								
							
						
					
					
						commit
						d11ed3ab31
					
				
					 2 changed files with 87 additions and 85 deletions
				
			
		|  | @ -218,91 +218,12 @@ extern struct cred init_cred; | ||||||
| #define INIT_TASK_SECURITY | #define INIT_TASK_SECURITY | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /*
 |  | ||||||
|  *  INIT_TASK is used to set up the first task table, touch at |  | ||||||
|  * your own risk!. Base=0, limit=0x1fffff (=2MB) |  | ||||||
|  */ |  | ||||||
| #define INIT_TASK(tsk)	\ |  | ||||||
| {									\ |  | ||||||
| 	INIT_TASK_TI(tsk)						\ |  | ||||||
| 	.state		= 0,						\ |  | ||||||
| 	.stack		= init_stack,					\ |  | ||||||
| 	.usage		= ATOMIC_INIT(2),				\ |  | ||||||
| 	.flags		= PF_KTHREAD,					\ |  | ||||||
| 	.prio		= MAX_PRIO-20,					\ |  | ||||||
| 	.static_prio	= MAX_PRIO-20,					\ |  | ||||||
| 	.normal_prio	= MAX_PRIO-20,					\ |  | ||||||
| 	.policy		= SCHED_NORMAL,					\ |  | ||||||
| 	.cpus_allowed	= CPU_MASK_ALL,					\ |  | ||||||
| 	.nr_cpus_allowed= NR_CPUS,					\ |  | ||||||
| 	.mm		= NULL,						\ |  | ||||||
| 	.active_mm	= &init_mm,					\ |  | ||||||
| 	.restart_block = {						\ |  | ||||||
| 		.fn = do_no_restart_syscall,				\ |  | ||||||
| 	},								\ |  | ||||||
| 	.se		= {						\ |  | ||||||
| 		.group_node 	= LIST_HEAD_INIT(tsk.se.group_node),	\ |  | ||||||
| 	},								\ |  | ||||||
| 	.rt		= {						\ |  | ||||||
| 		.run_list	= LIST_HEAD_INIT(tsk.rt.run_list),	\ |  | ||||||
| 		.time_slice	= RR_TIMESLICE,				\ |  | ||||||
| 	},								\ |  | ||||||
| 	.tasks		= LIST_HEAD_INIT(tsk.tasks),			\ |  | ||||||
| 	INIT_PUSHABLE_TASKS(tsk)					\ |  | ||||||
| 	INIT_CGROUP_SCHED(tsk)						\ |  | ||||||
| 	.ptraced	= LIST_HEAD_INIT(tsk.ptraced),			\ |  | ||||||
| 	.ptrace_entry	= LIST_HEAD_INIT(tsk.ptrace_entry),		\ |  | ||||||
| 	.real_parent	= &tsk,						\ |  | ||||||
| 	.parent		= &tsk,						\ |  | ||||||
| 	.children	= LIST_HEAD_INIT(tsk.children),			\ |  | ||||||
| 	.sibling	= LIST_HEAD_INIT(tsk.sibling),			\ |  | ||||||
| 	.group_leader	= &tsk,						\ |  | ||||||
| 	RCU_POINTER_INITIALIZER(real_cred, &init_cred),			\ |  | ||||||
| 	RCU_POINTER_INITIALIZER(cred, &init_cred),			\ |  | ||||||
| 	.comm		= INIT_TASK_COMM,				\ |  | ||||||
| 	.thread		= INIT_THREAD,					\ |  | ||||||
| 	.fs		= &init_fs,					\ |  | ||||||
| 	.files		= &init_files,					\ |  | ||||||
| 	.signal		= &init_signals,				\ |  | ||||||
| 	.sighand	= &init_sighand,				\ |  | ||||||
| 	.nsproxy	= &init_nsproxy,				\ |  | ||||||
| 	.pending	= {						\ |  | ||||||
| 		.list = LIST_HEAD_INIT(tsk.pending.list),		\ |  | ||||||
| 		.signal = {{0}}},					\ |  | ||||||
| 	.blocked	= {{0}},					\ |  | ||||||
| 	.alloc_lock	= __SPIN_LOCK_UNLOCKED(tsk.alloc_lock),		\ |  | ||||||
| 	.journal_info	= NULL,						\ |  | ||||||
| 	INIT_CPU_TIMERS(tsk)						\ |  | ||||||
| 	.pi_lock	= __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock),	\ |  | ||||||
| 	.timer_slack_ns = 50000, /* 50 usec default slack */		\ |  | ||||||
| 	.pids = {							\ |  | ||||||
| 		[PIDTYPE_PID]  = INIT_PID_LINK(PIDTYPE_PID),		\ |  | ||||||
| 		[PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID),		\ |  | ||||||
| 		[PIDTYPE_SID]  = INIT_PID_LINK(PIDTYPE_SID),		\ |  | ||||||
| 	},								\ |  | ||||||
| 	.thread_group	= LIST_HEAD_INIT(tsk.thread_group),		\ |  | ||||||
| 	.thread_node	= LIST_HEAD_INIT(init_signals.thread_head),	\ |  | ||||||
| 	INIT_IDS							\ |  | ||||||
| 	INIT_PERF_EVENTS(tsk)						\ |  | ||||||
| 	INIT_TRACE_IRQFLAGS						\ |  | ||||||
| 	INIT_LOCKDEP							\ |  | ||||||
| 	INIT_FTRACE_GRAPH						\ |  | ||||||
| 	INIT_TRACE_RECURSION						\ |  | ||||||
| 	INIT_TASK_RCU_PREEMPT(tsk)					\ |  | ||||||
| 	INIT_TASK_RCU_TASKS(tsk)					\ |  | ||||||
| 	INIT_CPUSET_SEQ(tsk)						\ |  | ||||||
| 	INIT_RT_MUTEXES(tsk)						\ |  | ||||||
| 	INIT_PREV_CPUTIME(tsk)						\ |  | ||||||
| 	INIT_VTIME(tsk)							\ |  | ||||||
| 	INIT_NUMA_BALANCING(tsk)					\ |  | ||||||
| 	INIT_KASAN(tsk)							\ |  | ||||||
| 	INIT_LIVEPATCH(tsk)						\ |  | ||||||
| 	INIT_TASK_SECURITY						\ |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /* Attach to the init_task data structure for proper alignment */ | /* Attach to the init_task data structure for proper alignment */ | ||||||
|  | #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | ||||||
| #define __init_task_data __attribute__((__section__(".data..init_task"))) | #define __init_task_data __attribute__((__section__(".data..init_task"))) | ||||||
|  | #else | ||||||
|  | #define __init_task_data /**/ | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Attach to the thread_info data structure for proper alignment */ | /* Attach to the thread_info data structure for proper alignment */ | ||||||
| #define __init_thread_info __attribute__((__section__(".data..init_thread_info"))) | #define __init_thread_info __attribute__((__section__(".data..init_thread_info"))) | ||||||
|  |  | ||||||
|  | @ -16,12 +16,93 @@ | ||||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||||
| 
 | 
 | ||||||
| /* Initial task structure */ | 
 | ||||||
|  | /*
 | ||||||
|  |  * Set up the first task table, touch at your own risk!. Base=0, | ||||||
|  |  * limit=0x1fffff (=2MB) | ||||||
|  |  */ | ||||||
| struct task_struct init_task | struct task_struct init_task | ||||||
| #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | ||||||
| 	__init_task_data | 	__init_task_data | ||||||
| #endif | #endif | ||||||
| 	= INIT_TASK(init_task); | = { | ||||||
|  | 	INIT_TASK_TI(init_task) | ||||||
|  | 	.state		= 0, | ||||||
|  | 	.stack		= init_stack, | ||||||
|  | 	.usage		= ATOMIC_INIT(2), | ||||||
|  | 	.flags		= PF_KTHREAD, | ||||||
|  | 	.prio		= MAX_PRIO-20, | ||||||
|  | 	.static_prio	= MAX_PRIO-20, | ||||||
|  | 	.normal_prio	= MAX_PRIO-20, | ||||||
|  | 	.policy		= SCHED_NORMAL, | ||||||
|  | 	.cpus_allowed	= CPU_MASK_ALL, | ||||||
|  | 	.nr_cpus_allowed= NR_CPUS, | ||||||
|  | 	.mm		= NULL, | ||||||
|  | 	.active_mm	= &init_mm, | ||||||
|  | 	.restart_block = { | ||||||
|  | 		.fn = do_no_restart_syscall, | ||||||
|  | 	}, | ||||||
|  | 	.se		= { | ||||||
|  | 		.group_node 	= LIST_HEAD_INIT(init_task.se.group_node), | ||||||
|  | 	}, | ||||||
|  | 	.rt		= { | ||||||
|  | 		.run_list	= LIST_HEAD_INIT(init_task.rt.run_list), | ||||||
|  | 		.time_slice	= RR_TIMESLICE, | ||||||
|  | 	}, | ||||||
|  | 	.tasks		= LIST_HEAD_INIT(init_task.tasks), | ||||||
|  | 	INIT_PUSHABLE_TASKS(init_task) | ||||||
|  | 	INIT_CGROUP_SCHED(init_task) | ||||||
|  | 	.ptraced	= LIST_HEAD_INIT(init_task.ptraced), | ||||||
|  | 	.ptrace_entry	= LIST_HEAD_INIT(init_task.ptrace_entry), | ||||||
|  | 	.real_parent	= &init_task, | ||||||
|  | 	.parent		= &init_task, | ||||||
|  | 	.children	= LIST_HEAD_INIT(init_task.children), | ||||||
|  | 	.sibling	= LIST_HEAD_INIT(init_task.sibling), | ||||||
|  | 	.group_leader	= &init_task, | ||||||
|  | 	RCU_POINTER_INITIALIZER(real_cred, &init_cred), | ||||||
|  | 	RCU_POINTER_INITIALIZER(cred, &init_cred), | ||||||
|  | 	.comm		= INIT_TASK_COMM, | ||||||
|  | 	.thread		= INIT_THREAD, | ||||||
|  | 	.fs		= &init_fs, | ||||||
|  | 	.files		= &init_files, | ||||||
|  | 	.signal		= &init_signals, | ||||||
|  | 	.sighand	= &init_sighand, | ||||||
|  | 	.nsproxy	= &init_nsproxy, | ||||||
|  | 	.pending	= { | ||||||
|  | 		.list = LIST_HEAD_INIT(init_task.pending.list), | ||||||
|  | 		.signal = {{0}} | ||||||
|  | 	}, | ||||||
|  | 	.blocked	= {{0}}, | ||||||
|  | 	.alloc_lock	= __SPIN_LOCK_UNLOCKED(init_task.alloc_lock), | ||||||
|  | 	.journal_info	= NULL, | ||||||
|  | 	INIT_CPU_TIMERS(init_task) | ||||||
|  | 	.pi_lock	= __RAW_SPIN_LOCK_UNLOCKED(init_task.pi_lock), | ||||||
|  | 	.timer_slack_ns = 50000, /* 50 usec default slack */ | ||||||
|  | 	.pids = { | ||||||
|  | 		[PIDTYPE_PID]  = INIT_PID_LINK(PIDTYPE_PID), | ||||||
|  | 		[PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), | ||||||
|  | 		[PIDTYPE_SID]  = INIT_PID_LINK(PIDTYPE_SID), | ||||||
|  | 	}, | ||||||
|  | 	.thread_group	= LIST_HEAD_INIT(init_task.thread_group), | ||||||
|  | 	.thread_node	= LIST_HEAD_INIT(init_signals.thread_head), | ||||||
|  | 	INIT_IDS | ||||||
|  | 	INIT_PERF_EVENTS(init_task) | ||||||
|  | 	INIT_TRACE_IRQFLAGS | ||||||
|  | 	INIT_LOCKDEP | ||||||
|  | 	INIT_FTRACE_GRAPH | ||||||
|  | 	INIT_TRACE_RECURSION | ||||||
|  | 	INIT_TASK_RCU_PREEMPT(init_task) | ||||||
|  | 	INIT_TASK_RCU_TASKS(init_task) | ||||||
|  | 	INIT_CPUSET_SEQ(init_task) | ||||||
|  | 	INIT_RT_MUTEXES(init_task) | ||||||
|  | 	INIT_PREV_CPUTIME(init_task) | ||||||
|  | 	INIT_VTIME(init_task) | ||||||
|  | 	INIT_NUMA_BALANCING(init_task) | ||||||
|  | 	INIT_KASAN(init_task) | ||||||
|  | 	INIT_LIVEPATCH(init_task) | ||||||
|  | 	INIT_TASK_SECURITY | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| EXPORT_SYMBOL(init_task); | EXPORT_SYMBOL(init_task); | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 David Howells
						David Howells