53 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#include <linux/kernel.h>3#include <linux/blkdev.h>4#include <linux/init.h>5#include <linux/syscalls.h>6#include <linux/unistd.h>7#include <linux/slab.h>8#include <linux/mount.h>9#include <linux/major.h>10#include <linux/root_dev.h>11#include <linux/init_syscalls.h>12#include <linux/task_work.h>13#include <linux/file.h>14 15void mount_root_generic(char *name, char *pretty_name, int flags);16void mount_root(char *root_device_name);17extern int root_mountflags;18 19static inline __init int create_dev(char *name, dev_t dev)20{21 init_unlink(name);22 return init_mknod(name, S_IFBLK | 0600, new_encode_dev(dev));23}24 25#ifdef CONFIG_BLK_DEV_RAM26 27int __init rd_load_disk(int n);28int __init rd_load_image(char *from);29 30#else31 32static inline int rd_load_disk(int n) { return 0; }33static inline int rd_load_image(char *from) { return 0; }34 35#endif36 37#ifdef CONFIG_BLK_DEV_INITRD38bool __init initrd_load(char *root_device_name);39#else40static inline bool initrd_load(char *root_device_name)41{42 return false;43 }44 45#endif46 47/* Ensure that async file closing finished to prevent spurious errors. */48static inline void init_flush_fput(void)49{50 flush_delayed_fput();51 task_work_run();52}53