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_RAM 26 27int __init rd_load_disk(int n); 28int __init rd_load_image(char *from); 29 30#else 31 32static inline int rd_load_disk(int n) { return 0; } 33static inline int rd_load_image(char *from) { return 0; } 34 35#endif 36 37#ifdef CONFIG_BLK_DEV_INITRD 38bool __init initrd_load(char *root_device_name); 39#else 40static inline bool initrd_load(char *root_device_name) 41{ 42 return false; 43 } 44 45#endif 46 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