/* * kinit/kinit.h */ #ifndef KINIT_H #define KINIT_H #include #include #include int do_mounts(int argc, char *argv[]); int mount_nfs_root(int argc, char *argv[], int flags); int ramdisk_load(int argc, char *argv[]); void md_run(int argc, char *argv[]); const char *bdevname(dev_t dev); extern int mnt_procfs; extern int mnt_sysfs; extern int init_argc; extern char **init_argv; extern const char *progname; char *get_arg(int argc, char *argv[], const char *name); int get_flag(int argc, char *argv[], const char *name); int getintfile(const char *path, long *val); ssize_t readfile(const char *path, char **pptr); ssize_t freadfile(FILE *f, char **pptr); /* * min()/max() macros that also do * strict type-checking.. See the * "unnecessary" pointer comparison. * From the Linux kernel. */ #define min(x, y) ({ \ typeof(x) _x = (x); \ typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x < _y ? _x : _y; }) #define max(x, y) ({ \ typeof(x) _x = (x); \ typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x > _y ? _x : _y; }) #ifdef DEBUG # define dprintf printf #else # define dprintf(...) ((void)0) #endif #ifdef DEBUG void dump_args(int argc, char *argv[]); #else static inline void dump_args(int argc, char *argv[]) { (void)argc; (void)argv; } #endif int drop_capabilities(const char *caps); #endif /* KINIT_H */