diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-12-19 10:48:40 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-12-19 10:48:40 +0200 |
| commit | 8bb1e280280c2f30740defca68ea643c56a3d880 (patch) | |
| tree | 6cc0e6ea37554b5c397a0987c21807950e931cdf /include/apos/utils.h | |
| parent | 383e55e6bb725a01f652a9fb74f6103b2c789793 (diff) | |
| download | kmi-8bb1e280280c2f30740defca68ea643c56a3d880.tar.gz kmi-8bb1e280280c2f30740defca68ea643c56a3d880.zip | |
[WIP] virtual memory management
Diffstat (limited to 'include/apos/utils.h')
| -rw-r--r-- | include/apos/utils.h | 17 |
1 files changed, 17 insertions, 0 deletions
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 <apos/builtin.h> + +#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 <apos/types.h> 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); } |
