1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX__INIT_TASK_H
3#define _LINUX__INIT_TASK_H
4
5#include <linux/rcupdate.h>
6#include <linux/irqflags.h>
7#include <linux/utsname.h>
8#include <linux/lockdep.h>
9#include <linux/ftrace.h>
10#include <linux/ipc.h>
11#include <linux/pid_namespace.h>
12#include <linux/user_namespace.h>
13#include <linux/securebits.h>
14#include <linux/seqlock.h>
15#include <linux/rbtree.h>
16#include <linux/sched/autogroup.h>
17#include <net/net_namespace.h>
18#include <linux/sched/rt.h>
19#include <linux/livepatch.h>
20#include <linux/mm_types.h>
21
22#include <asm/thread_info.h>
23
24extern struct files_struct init_files;
25extern struct fs_struct init_fs;
26extern struct nsproxy init_nsproxy;
27extern struct group_info init_groups;
28extern struct cred init_cred;
29
30#ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
31#define INIT_PREV_CPUTIME(x) .prev_cputime = { \
32 .lock = __RAW_SPIN_LOCK_UNLOCKED(x.prev_cputime.lock), \
33},
34#else
35#define INIT_PREV_CPUTIME(x)
36#endif
37
38#ifdef CONFIG_POSIX_TIMERS
39#define INIT_CPU_TIMERS(s) \
40 .cpu_timers = { \
41 LIST_HEAD_INIT(s.cpu_timers[0]), \
42 LIST_HEAD_INIT(s.cpu_timers[1]), \
43 LIST_HEAD_INIT(s.cpu_timers[2]), \
44 },
45#else
46#define INIT_CPU_TIMERS(s)
47#endif
48
49#define INIT_TASK_COMM "swapper"
50
51/* Attach to the init_task data structure for proper alignment */
52#ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK
53#define __init_task_data __attribute__((__section__(".data..init_task")))
54#else
55#define __init_task_data /**/
56#endif
57
58/* Attach to the thread_info data structure for proper alignment */
59#define __init_thread_info __attribute__((__section__(".data..init_thread_info")))
60
61#endif
62