haiku/headers
Augustin Cavalier 875b13d582 bootloader: Overhaul heap region allocation.
Previously, there was only platform_init_heap/platform_release_heap,
which allocated a single static heap region for the heap to use,
and any subsequent heap allocations had to go through the standard
platform_allocate_region, which allocates regions visible both
to the bootloader and the kernel.

But as mentioned in previous changes, it isn't always easy to
release regions allocated that way. And besides, some bootloaders
(like EFI) use a completely separate mechanism to allocate
bootloader-local memory, which will never get "leaked" into
the kernel.

So instead, refactor all platforms to instead provide two
new methods: platform_{allocate,free}_heap_region. On EFI
this is easy to implement; on most other platforms we have
logic based more on the old platform_init_heap or allocate_region.

(On the BIOS loader in particular, we can only fully release
the memory if it's the last thing we allocated in the physical
addresses. If the "large allocation" threshhold is lowered
back to 16 KB, then we are unable to do this enough times
that we will run past the end of the 8 MB identity map and
thus fail to boot. But with the larger threshhold, we don't
leak nearly as much, and don't hit the threshhold.)

This should further reduce the amount of bootloader memory
permanently "leaked" into the kernel's used memory, though
on some platforms it may still be nonzero.

Change-Id: I5b2257fc5a425c024f298291f1401a26ea246383
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8440
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-10-10 16:13:11 +00:00
..
build kernel/util: Introduce BumpAllocator. 2024-09-06 19:15:42 +00:00
compatibility headers: Change most remaining include guards to _DEFAULT_SOURCE. 2024-09-19 16:43:31 +00:00
config HaikuConfig: Don't define __HAIKU_BEOS_COMPATIBLE_TYPES in kernel mode. 2024-09-24 12:10:35 -04:00
cpp userlandfs: use std::bitset for FSCapabilities 2023-07-10 06:27:18 +00:00
glibc
libs udis86: remove 2024-07-17 19:11:50 +00:00
os Rename B_MTR_* constants to "something more meaningful". 2024-09-19 16:43:24 +00:00
posix headers: Change most remaining include guards to _DEFAULT_SOURCE. 2024-09-19 16:43:31 +00:00
private bootloader: Overhaul heap region allocation. 2024-10-10 16:13:11 +00:00
tools cppunit: Enable CPPUNIT_HAVE_SSTREAM for the non-legacy GCC. 2022-03-29 19:09:38 -04:00