From 8bb1e280280c2f30740defca68ea643c56a3d880 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 19 Dec 2021 10:48:40 +0200 Subject: [WIP] virtual memory management --- include/apos/utils.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'include/apos/utils.h') diff --git a/include/apos/utils.h b/include/apos/utils.h index 39d5b83..881cd8f 100644 --- a/include/apos/utils.h +++ b/include/apos/utils.h @@ -14,10 +14,24 @@ #define GLUE2(x, y) x##y #define GLUE(x, y) GLUE2(x, y) +#include + +#if __has_builtin(__builtin_offsetof) +#define offsetof(type, member) __builtin_offsetof(type, member) +#else +#define offsetof(type, member) ((size_t)&((type *)0)->member) +#endif + +#define container_of(ptr, type, member) \ + ((type *)((char *)(ptr) - offsetof(type, member))) + #include static inline size_t align_up(size_t val, size_t a) { + if(!a) + return val; + size_t rem = val % a; if (rem == 0) @@ -28,6 +42,9 @@ static inline size_t align_up(size_t val, size_t a) static inline size_t align_down(size_t val, size_t a) { + if(!a) + return val; + return val - (val % a); } -- cgit v1.3