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
|
@ -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 New Issue