// SPDX-License-Identifier: GPL-2.0-only/* * linux/init/main.c * * Copyright (C) 1991, 1992 Linus Torvalds * * GK 2/5/95 - Changed to support mounting root fs via NFS * Added initrd & change_root: Werner Almesberger & Hans Lermen, Feb '96 * Moan early if gcc is old, avoiding bogus kernels - Paul Gortmaker, May '96 * Simplified starting of init: Michael A. Griffith <grif@acm.org> */#define DEBUG /* Enable initcall_debug */#include<linux/types.h>#include<linux/extable.h>#include<linux/module.h>#include<linux/proc_fs.h>#include<linux/binfmts.h>#include<linux/kernel.h>#include<linux/syscalls.h>#include<linux/stackprotector.h>#include<linux/string.h>#include<linux/ctype.h>#include<linux/delay.h>#include<linux/ioport.h>#include<linux/init.h>#include<linux/initrd.h>#include<linux/memblock.h>#include<linux/acpi.h>#include<linux/bootconfig.h>#include<linux/console.h>#include<linux/nmi.h>#include<linux/percpu.h>#include<linux/kmod.h>#include<linux/vmalloc.h>#include<linux/kernel_stat.h>#include<linux/start_kernel.h>#include<linux/security.h>#include<linux/smp.h>#include<linux/profile.h>#include<linux/rcupdate.h>#include<linux/moduleparam.h>#include<linux/kallsyms.h>#include<linux/writeback.h>#include<linux/cpu.h>#include<linux/cpuset.h>#include<linux/cgroup.h>#include<linux/efi.h>#include<linux/tick.h>#include<linux/sched/isolation.h>#include<linux/interrupt.h>#include<linux/taskstats_kern.h>#include<linux/delayacct.h>#include<linux/unistd.h>#include<linux/utsname.h>#include<linux/rmap.h>#include<linux/mempolicy.h>#include<linux/key.h>#include<linux/buffer_head.h>#include<linux/page_ext.h>#include<linux/debug_locks.h>#include<linux/debugobjects.h>#include<linux/lockdep.h>#include<linux/kmemleak.h>#include<linux/pid_namespace.h>#include<linux/device.h>#include<linux/kthread.h>#include<linux/sched.h>#include<linux/sched/init.h>#include<linux/signal.h>#include<linux/idr.h>#include<linux/kgdb.h>#include<linux/ftrace.h>#include<linux/async.h>#include<li