#pragma once #include #include #include typedef struct { char c_magic[6]; char c_ino[8]; char c_mode[8]; char c_uid[8]; char c_gid[8]; char c_nlink[8]; char c_mtime[8]; char c_filesize[8]; char c_devmajor[8]; char c_devminor[8]; char c_rdevmajor[8]; char c_rdevminor[8]; char c_namesize[8]; char c_check[8]; }__attribute__((packed)) cpio_newc_header_t; typedef struct file_node { struct file_node *l, *r; int rand; int node_size; int ino; int mode; int uid; int gid; int nlink; int mtime; int filesize; int devmajor; int devminor; int rdevmajor; int rdevminor; int namesize; char *filename; uint8_t *filecontent; } file_node_t; typedef void (*initrd_callback_func_t)(file_node_t *); file_node_t *initrd_init(void); void initrd_fdt_callback(const vector_t *props); file_node_t *initrd_get(file_node_t *root, const char *filename); void initrd_traverse(file_node_t *tr, initrd_callback_func_t func); extern fdt_callback_t initrd_dtb_cb; extern void *initrd_start; extern void *initrd_end;