mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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