From 4fcc637e29104f543c1bf278cc2481bfeb9ea3fa Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 11 Mar 2021 13:11:59 +0100 Subject: [PATCH] Kernel: Add MAKE_ALIGNED_ALLOCATED helper macro This macro inserts operator new/delete into a class, allowing you to very easily specify a specific heap alignment. --- Kernel/Heap/kmalloc.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Kernel/Heap/kmalloc.h b/Kernel/Heap/kmalloc.h index 7acc5f018a..5c0101ea32 100644 --- a/Kernel/Heap/kmalloc.h +++ b/Kernel/Heap/kmalloc.h @@ -32,6 +32,13 @@ #define KMALLOC_SCRUB_BYTE 0xbb #define KFREE_SCRUB_BYTE 0xaa +#define MAKE_ALIGNED_ALLOCATED(type, alignment) \ +public: \ + void* operator new(size_t) { return kmalloc_aligned(sizeof(type)); } \ + void operator delete(void* ptr) { kfree_aligned(ptr); } \ + \ +private: + void kmalloc_init(); [[gnu::malloc, gnu::returns_nonnull, gnu::alloc_size(1)]] void* kmalloc_impl(size_t); [[gnu::malloc, gnu::returns_nonnull, gnu::alloc_size(1)]] void* kmalloc_eternal(size_t);