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 | ||||
| #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 */ | ||||
| #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | ||||
| #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 */ | ||||
| #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 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 | ||||
| #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | ||||
| 	__init_task_data | ||||
| #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); | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 David Howells
						David Howells