diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-12-19 19:13:41 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-12-19 19:13:41 +0200 |
| commit | 98255910aa82c27d04ba79704086eca2310b3075 (patch) | |
| tree | f588fc5d75d458d93d44993fecbaf232a74da3a4 /include/apos | |
| parent | 9966b49db468de0168c7a455dfb5b4c66c413c4d (diff) | |
| download | kmi-98255910aa82c27d04ba79704086eca2310b3075.tar.gz kmi-98255910aa82c27d04ba79704086eca2310b3075.zip | |
Add cpio newc format reader
+ Still need to actually add in an initrd that uses the format :D
Diffstat (limited to 'include/apos')
| -rw-r--r-- | include/apos/initrd.h | 6 | ||||
| -rw-r--r-- | include/apos/utils.h | 27 |
2 files changed, 32 insertions, 1 deletions
diff --git a/include/apos/initrd.h b/include/apos/initrd.h index 942875f..1e1129c 100644 --- a/include/apos/initrd.h +++ b/include/apos/initrd.h @@ -2,8 +2,12 @@ #define APOS_INITRD_H #include <apos/types.h> +#include <apos/pmem.h> size_t get_init_size(void *fdt); -void move_init(void *fdt, void *target, size_t sz); +void move_init(void *fdt, void *target); + +pm_t get_initrdtop(void *fdt); +pm_t get_initrdbase(void *fdt); #endif /* APOS_INITRD_H */ diff --git a/include/apos/utils.h b/include/apos/utils.h index 881cd8f..d0b41ce 100644 --- a/include/apos/utils.h +++ b/include/apos/utils.h @@ -25,6 +25,8 @@ #define container_of(ptr, type, member) \ ((type *)((char *)(ptr) - offsetof(type, member))) +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + #include <apos/types.h> static inline size_t align_up(size_t val, size_t a) @@ -48,4 +50,29 @@ static inline size_t align_down(size_t val, size_t a) return val - (val % a); } +static inline size_t asciinum(char c) +{ + if(c >= '0' && c <= '9') + return c - '0'; + else if(c >= 'A' && c <= 'F') + return c - 'A' + 10; + else if(c >= 'a' && c <= 'f') + return c - 'a' + 10; + else + return 0; +} + +static inline size_t convnum(const char *c, size_t len, size_t base) +{ + size_t multiplier = 1; + size_t sum = 0; + for(size_t i = 0; i < len; ++i){ + sum += asciinum(c[len - 1 - i]) * multiplier; + multiplier *= base; + } + + return sum; +} + + #endif /* APOS_UTILS_H */ |
