diff options
author | Andreas Kling <kling@serenityos.org> | 2021-12-25 17:23:18 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-12-25 22:07:59 +0100 |
commit | f7a4c34929361d3df905d49e7ae20d2eb5f90ff3 (patch) | |
tree | 1cc99990192ef163734902f4e268b48e04b2a735 /.prettierignore | |
parent | 1a35e27490b7551717af943b9a798df848512a23 (diff) | |
download | serenity-f7a4c34929361d3df905d49e7ae20d2eb5f90ff3.zip |
Kernel: Make kmalloc heap expansion kmalloc-free
Previously, the heap expansion logic could end up calling kmalloc
recursively, which was quite messy and hard to reason about.
This patch redesigns heap expansion so that it's kmalloc-free:
- We make a single large virtual range allocation at startup
- When expanding, we bump allocate VM from that region
- When expanding, we populate page tables directly ourselves,
instead of going via MemoryManager.
This makes heap expansion a great deal simpler. However, do note that it
introduces two new flaws that we'll need to deal with eventually:
- The single virtual range allocation is limited to 64 MiB and once
exhausted, kmalloc() will fail. (Actually, it will PANIC for now..)
- The kmalloc heap can no longer shrink once expanded. Subheaps stay
in place once constructed.
Diffstat (limited to '.prettierignore')
0 files changed, 0 insertions, 0 deletions