#ifndef KINITRD_H #define KINITRD_H #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]; } cpio_header_t; static inline uint32_t parse_hex(const char *s) { uint32_t val = 0; for (int i = 0; i < 8; i++) { val <<= 4; if (s[i] >= '0' && s[i] <= '9') val += (s[i] - '0'); else if (s[i] >= 'A' && s[i] <= 'F') val += (s[i] - 'A' + 10); else if (s[i] >= 'a' && s[i] <= 'f') val += (s[i] - 'a' + 10); } return val; } void parse_cpio(void *initrd_start); #endif