Files
RockOS/kernel/initrd.h

36 lines
802 B
C
Raw Normal View History

#ifndef KINITRD_H
#define KINITRD_H
#include <stdint.h>
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