Blame view
init/init_task.c
6.08 KB
b24413180 License cleanup: ... |
1 |
// SPDX-License-Identifier: GPL-2.0 |
a4a2eb490 init_task: Create... |
2 3 4 5 |
#include <linux/init_task.h> #include <linux/export.h> #include <linux/mqueue.h> #include <linux/sched.h> |
cf4aebc29 sched: Move sched... |
6 |
#include <linux/sched/sysctl.h> |
8bd75c77b sched/rt: Move rt... |
7 |
#include <linux/sched/rt.h> |
9164bb4a1 sched/headers: Pr... |
8 |
#include <linux/sched/task.h> |
a4a2eb490 init_task: Create... |
9 10 11 |
#include <linux/init.h> #include <linux/fs.h> #include <linux/mm.h> |
f0b752168 audit: convert se... |
12 |
#include <linux/audit.h> |
98fa15f34 mm: replace all o... |
13 |
#include <linux/numa.h> |
d08b9f0ca scs: Add support ... |
14 |
#include <linux/scs.h> |
a4a2eb490 init_task: Create... |
15 |
|
7c0f6ba68 Replace <asm/uacc... |
16 |
#include <linux/uaccess.h> |
a4a2eb490 init_task: Create... |
17 |
|
3678e2fcc Expand the INIT_S... |
18 19 20 21 22 23 24 25 |
static struct signal_struct init_signals = { .nr_threads = 1, .thread_head = LIST_HEAD_INIT(init_task.thread_node), .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(init_signals.wait_chldexit), .shared_pending = { .list = LIST_HEAD_INIT(init_signals.shared_pending.list), .signal = {{0}} }, |
c3ad2c3b0 signal: Don't res... |
26 |
.multiprocess = HLIST_HEAD_INIT, |
3678e2fcc Expand the INIT_S... |
27 28 |
.rlim = INIT_RLIMITS, .cred_guard_mutex = __MUTEX_INITIALIZER(init_signals.cred_guard_mutex), |
ab7709b55 exec: Transform e... |
29 |
.exec_update_lock = __RWSEM_INITIALIZER(init_signals.exec_update_lock), |
3678e2fcc Expand the INIT_S... |
30 31 32 33 |
#ifdef CONFIG_POSIX_TIMERS .posix_timers = LIST_HEAD_INIT(init_signals.posix_timers), .cputimer = { .cputime_atomic = INIT_CPUTIME_ATOMIC, |
3678e2fcc Expand the INIT_S... |
34 35 36 |
}, #endif INIT_CPU_TIMERS(init_signals) |
2c4704756 pids: Move the pg... |
37 38 |
.pids = { [PIDTYPE_PID] = &init_struct_pid, |
6883f81aa pid: Implement PI... |
39 |
[PIDTYPE_TGID] = &init_struct_pid, |
2c4704756 pids: Move the pg... |
40 41 42 |
[PIDTYPE_PGID] = &init_struct_pid, [PIDTYPE_SID] = &init_struct_pid, }, |
3678e2fcc Expand the INIT_S... |
43 44 45 46 |
INIT_PREV_CPUTIME(init_signals) }; static struct sighand_struct init_sighand = { |
60d4de3ff sched/core: Conve... |
47 |
.count = REFCOUNT_INIT(1), |
3678e2fcc Expand the INIT_S... |
48 49 50 51 |
.action = { { { .sa_handler = SIG_DFL, } }, }, .siglock = __SPIN_LOCK_UNLOCKED(init_sighand.siglock), .signalfd_wqh = __WAIT_QUEUE_HEAD_INITIALIZER(init_sighand.signalfd_wqh), }; |
a4a2eb490 init_task: Create... |
52 |
|
d08b9f0ca scs: Add support ... |
53 54 55 56 57 58 |
#ifdef CONFIG_SHADOW_CALL_STACK unsigned long init_shadow_call_stack[SCS_SIZE / sizeof(long)] __init_task_data = { [(SCS_SIZE / sizeof(long)) - 1] = SCS_END_MAGIC }; #endif |
d11ed3ab3 Expand INIT_TASK(... |
59 60 61 62 |
/* * Set up the first task table, touch at your own risk!. Base=0, * limit=0x1fffff (=2MB) */ |
0500871f2 Construct init th... |
63 64 65 66 |
struct task_struct init_task #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK __init_task_data #endif |
d0b7213f8 init: Align init_... |
67 |
__aligned(L1_CACHE_BYTES) |
d11ed3ab3 Expand INIT_TASK(... |
68 |
= { |
4e7e3adbb Expand various IN... |
69 70 |
#ifdef CONFIG_THREAD_INFO_IN_TASK .thread_info = INIT_THREAD_INFO(init_task), |
f0b89d395 sched/core: Conve... |
71 |
.stack_refcount = REFCOUNT_INIT(1), |
4e7e3adbb Expand various IN... |
72 |
#endif |
d11ed3ab3 Expand INIT_TASK(... |
73 74 |
.state = 0, .stack = init_stack, |
ec1d28192 sched/core: Conve... |
75 |
.usage = REFCOUNT_INIT(2), |
d11ed3ab3 Expand INIT_TASK(... |
76 |
.flags = PF_KTHREAD, |
4e7e3adbb Expand various IN... |
77 78 79 |
.prio = MAX_PRIO - 20, .static_prio = MAX_PRIO - 20, .normal_prio = MAX_PRIO - 20, |
d11ed3ab3 Expand INIT_TASK(... |
80 |
.policy = SCHED_NORMAL, |
3bd370625 sched/core: Provi... |
81 82 |
.cpus_ptr = &init_task.cpus_mask, .cpus_mask = CPU_MASK_ALL, |
d11ed3ab3 Expand INIT_TASK(... |
83 84 85 |
.nr_cpus_allowed= NR_CPUS, .mm = NULL, .active_mm = &init_mm, |
4e7e3adbb Expand various IN... |
86 |
.restart_block = { |
d11ed3ab3 Expand INIT_TASK(... |
87 88 89 90 91 92 93 94 95 96 |
.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), |
4e7e3adbb Expand various IN... |
97 98 99 100 101 102 |
#ifdef CONFIG_SMP .pushable_tasks = PLIST_NODE_INIT(init_task.pushable_tasks, MAX_PRIO), #endif #ifdef CONFIG_CGROUP_SCHED .sched_task_group = &root_task_group, #endif |
d11ed3ab3 Expand INIT_TASK(... |
103 104 105 106 107 108 109 110 111 112 113 114 115 |
.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, |
0f2122045 io_uring: don't r... |
116 117 118 |
#ifdef CONFIG_IO_URING .io_uring = NULL, #endif |
d11ed3ab3 Expand INIT_TASK(... |
119 120 121 122 123 124 125 126 127 128 129 130 131 |
.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 */ |
2c4704756 pids: Move the pg... |
132 |
.thread_pid = &init_struct_pid, |
d11ed3ab3 Expand INIT_TASK(... |
133 134 |
.thread_group = LIST_HEAD_INIT(init_task.thread_group), .thread_node = LIST_HEAD_INIT(init_signals.thread_head), |
4b7d248b3 audit: move login... |
135 |
#ifdef CONFIG_AUDIT |
4e7e3adbb Expand various IN... |
136 |
.loginuid = INVALID_UID, |
f0b752168 audit: convert se... |
137 |
.sessionid = AUDIT_SID_UNSET, |
4e7e3adbb Expand various IN... |
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
#endif #ifdef CONFIG_PERF_EVENTS .perf_event_mutex = __MUTEX_INITIALIZER(init_task.perf_event_mutex), .perf_event_list = LIST_HEAD_INIT(init_task.perf_event_list), #endif #ifdef CONFIG_PREEMPT_RCU .rcu_read_lock_nesting = 0, .rcu_read_unlock_special.s = 0, .rcu_node_entry = LIST_HEAD_INIT(init_task.rcu_node_entry), .rcu_blocked_node = NULL, #endif #ifdef CONFIG_TASKS_RCU .rcu_tasks_holdout = false, .rcu_tasks_holdout_list = LIST_HEAD_INIT(init_task.rcu_tasks_holdout_list), .rcu_tasks_idle_cpu = -1, #endif |
d5f177d35 rcu-tasks: Add an... |
154 155 |
#ifdef CONFIG_TASKS_TRACE_RCU .trc_reader_nesting = 0, |
276c41044 rcu-tasks: Split ... |
156 |
.trc_reader_special.s = 0, |
d5f177d35 rcu-tasks: Add an... |
157 158 |
.trc_holdout_list = LIST_HEAD_INIT(init_task.trc_holdout_list), #endif |
4e7e3adbb Expand various IN... |
159 |
#ifdef CONFIG_CPUSETS |
b75058614 sched: tasks: Use... |
160 161 |
.mems_allowed_seq = SEQCNT_SPINLOCK_ZERO(init_task.mems_allowed_seq, &init_task.alloc_lock), |
4e7e3adbb Expand various IN... |
162 163 164 165 166 |
#endif #ifdef CONFIG_RT_MUTEXES .pi_waiters = RB_ROOT_CACHED, .pi_top_task = NULL, #endif |
d11ed3ab3 Expand INIT_TASK(... |
167 |
INIT_PREV_CPUTIME(init_task) |
4e7e3adbb Expand various IN... |
168 169 170 171 172 173 |
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN .vtime.seqcount = SEQCNT_ZERO(init_task.vtime_seqcount), .vtime.starttime = 0, .vtime.state = VTIME_SYS, #endif #ifdef CONFIG_NUMA_BALANCING |
98fa15f34 mm: replace all o... |
174 |
.numa_preferred_nid = NUMA_NO_NODE, |
4e7e3adbb Expand various IN... |
175 176 177 178 179 180 |
.numa_group = NULL, .numa_faults = NULL, #endif #ifdef CONFIG_KASAN .kasan_depth = 1, #endif |
dfd402a4c kcsan: Add Kernel... |
181 182 183 184 185 186 |
#ifdef CONFIG_KCSAN .kcsan_ctx = { .disable_count = 0, .atomic_next = 0, .atomic_nest_count = 0, .in_flat_atomic = false, |
81af89e15 kcsan: Add kcsan_... |
187 |
.access_mask = 0, |
757a4cefd kcsan: Add suppor... |
188 |
.scoped_accesses = {LIST_POISON1, NULL}, |
dfd402a4c kcsan: Add Kernel... |
189 190 |
}, #endif |
4e7e3adbb Expand various IN... |
191 192 193 194 |
#ifdef CONFIG_TRACE_IRQFLAGS .softirqs_enabled = 1, #endif #ifdef CONFIG_LOCKDEP |
e196e479a locking/lockdep: ... |
195 |
.lockdep_depth = 0, /* no locks held yet */ |
f6ec8829a locking/lockdep: ... |
196 |
.curr_chain_key = INITIAL_CHAIN_KEY, |
4e7e3adbb Expand various IN... |
197 198 199 200 201 |
.lockdep_recursion = 0, #endif #ifdef CONFIG_FUNCTION_GRAPH_TRACER .ret_stack = NULL, #endif |
c1a280b68 sched/preempt: Us... |
202 |
#if defined(CONFIG_TRACING) && defined(CONFIG_PREEMPTION) |
4e7e3adbb Expand various IN... |
203 204 205 206 207 208 209 210 |
.trace_recursion = 0, #endif #ifdef CONFIG_LIVEPATCH .patch_state = KLP_UNDEFINED, #endif #ifdef CONFIG_SECURITY .security = NULL, #endif |
c818c03b6 seccomp: Report n... |
211 212 213 |
#ifdef CONFIG_SECCOMP .seccomp = { .filter_count = ATOMIC_INIT(0) }, #endif |
d11ed3ab3 Expand INIT_TASK(... |
214 |
}; |
a4a2eb490 init_task: Create... |
215 216 217 218 219 220 |
EXPORT_SYMBOL(init_task); /* * Initial thread structure. Alignment of this is handled by a special * linker map entry. */ |
c65eacbe2 sched/core: Allow... |
221 |
#ifndef CONFIG_THREAD_INFO_IN_TASK |
0500871f2 Construct init th... |
222 |
struct thread_info init_thread_info __init_thread_info = INIT_THREAD_INFO(init_task); |
c65eacbe2 sched/core: Allow... |
223 |
#endif |