mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-24 15:13:57 +00:00
Kernel: Unbreak SlabAllocator after startup-time constructors
Now that the kernel supports startup-time constructors, we were first doing slab_alloc_init(), and then the constructors ran later on, zeroing out the freelist pointers. This meant that all slab allocators thought they were completelty exhausted and forwarded all requests to kmalloc() instead.
This commit is contained in:
parent
b6ccbd32eb
commit
7ef9c703d2
Notes:
sideshowbarker
2024-07-19 11:13:10 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/7ef9c703d20
1 changed files with 6 additions and 5 deletions
|
@ -61,11 +61,12 @@ private:
|
|||
char padding[templated_slab_size - sizeof(FreeSlab*)];
|
||||
};
|
||||
|
||||
FreeSlab* m_freelist { nullptr };
|
||||
size_t m_num_allocated { 0 };
|
||||
size_t m_num_free { 0 };
|
||||
void* m_base { nullptr };
|
||||
void* m_end { nullptr };
|
||||
// NOTE: These are not default-initialized to prevent an init-time constructor from overwriting them
|
||||
FreeSlab* m_freelist;
|
||||
size_t m_num_allocated;
|
||||
size_t m_num_free;
|
||||
void* m_base;
|
||||
void* m_end;
|
||||
|
||||
static_assert(sizeof(FreeSlab) == templated_slab_size);
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue