| // SPDX-License-Identifier: GPL-2.0 |
| #include <linux/init_task.h> |
| #include <linux/export.h> |
| #include <linux/mqueue.h> |
| #include <linux/sched.h> |
| #include <linux/sched/sysctl.h> |
| #include <linux/sched/rt.h> |
| #include <linux/sched/task.h> |
| #include <linux/init.h> |
| #include <linux/fs.h> |
| #include <linux/mm.h> |
| #include <linux/scs.h> |
| #include <linux/task_integrity.h> |
| |
| #include <asm/pgtable.h> |
| #include <linux/uaccess.h> |
| |
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
| #ifdef CONFIG_FIVE |
| static struct task_integrity init_integrity = |
| INIT_TASK_INTEGRITY(init_integrity); |
| #endif |
| |
| /* Initial task structure */ |
| struct task_struct init_task = INIT_TASK(init_task); |
| EXPORT_SYMBOL(init_task); |
| |
| #ifdef CONFIG_SHADOW_CALL_STACK |
| unsigned long init_shadow_call_stack[SCS_SIZE / sizeof(long)] __init_task_data |
| __aligned(SCS_SIZE) = { |
| [(SCS_SIZE / sizeof(long)) - 1] = SCS_END_MAGIC |
| }; |
| #endif |
| |
| /* |
| * Initial thread structure. Alignment of this is handled by a special |
| * linker map entry. |
| */ |
| union thread_union init_thread_union __init_task_data = { |
| #ifndef CONFIG_THREAD_INFO_IN_TASK |
| INIT_THREAD_INFO(init_task) |
| #endif |
| }; |