36 lines
802 B
C
36 lines
802 B
C
#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 |