From 8be90c49bc88572e7b57bff396bb838fca8ee9d6 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 1 Jul 2026 13:06:57 +0300 Subject: [PATCH] LibC: use auxv for `getpagesize` --- userspace/libraries/LibC/malloc.cpp | 9 +++++---- userspace/libraries/LibC/unistd.cpp | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/userspace/libraries/LibC/malloc.cpp b/userspace/libraries/LibC/malloc.cpp index 1792b5c0..0c4aad9c 100644 --- a/userspace/libraries/LibC/malloc.cpp +++ b/userspace/libraries/LibC/malloc.cpp @@ -2,12 +2,12 @@ #include #include -#include #include #include #include #include #include +#include static constexpr size_t s_allocator_chunk_size { 64 }; static constexpr size_t s_allocator_size { 1024 * 1024 }; @@ -248,10 +248,11 @@ void* malloc(size_t total_size) if (s_allocator_count == s_allocator_capacity) { - const size_t allocator_pages = (s_allocator_capacity * sizeof(BitmapAllocator) + PAGE_SIZE - 1) / PAGE_SIZE; + const size_t page_size = getpagesize(); + const size_t allocator_pages = (s_allocator_capacity * sizeof(BitmapAllocator) + page_size - 1) / page_size; const size_t new_allocator_pages = allocator_pages + 1; - void* new_allocators = mmap(nullptr, new_allocator_pages * PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + void* new_allocators = mmap(nullptr, new_allocator_pages * page_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); if (new_allocators == MAP_FAILED) goto malloc_return; @@ -261,7 +262,7 @@ void* malloc(size_t total_size) munmap(s_allocators, s_allocator_capacity * sizeof(BitmapAllocator)); s_allocators = static_cast(new_allocators); - s_allocator_capacity = new_allocator_pages * PAGE_SIZE / sizeof(BitmapAllocator); + s_allocator_capacity = new_allocator_pages * page_size / sizeof(BitmapAllocator); } if (!s_allocators[s_allocator_count].initialize()) diff --git a/userspace/libraries/LibC/unistd.cpp b/userspace/libraries/LibC/unistd.cpp index e216888d..1ff055c2 100644 --- a/userspace/libraries/LibC/unistd.cpp +++ b/userspace/libraries/LibC/unistd.cpp @@ -705,6 +705,8 @@ int chroot(const char* path) int getpagesize(void) { + if (auto value = getauxval(AT_PAGESZ)) + return value; return PAGE_SIZE; }