1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:17:35 +00:00

Kernel: Remove the kmalloc_eternal heap :^)

This was a premature optimization from the early days of SerenityOS.
The eternal heap was a simple bump pointer allocator over a static
byte array. My original idea was to avoid heap fragmentation and improve
data locality, but both ideas were rooted in cargo culting, not data.

We would reserve 4 MiB at boot and only ended up using ~256 KiB, wasting
the rest.

This patch replaces all kmalloc_eternal() usage by regular kmalloc().
This commit is contained in:
Andreas Kling 2021-12-28 19:12:22 +01:00
parent a1be135891
commit ac7ce12123
46 changed files with 5 additions and 82 deletions

View file

@ -13,7 +13,6 @@
namespace Kernel {
class ConsoleDevice final : public CharacterDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public:

View file

@ -24,7 +24,6 @@
namespace Kernel {
class DeviceManagement {
AK_MAKE_ETERNAL;
public:
DeviceManagement();

View file

@ -11,7 +11,6 @@
namespace Kernel {
class FullDevice final : public CharacterDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public:

View file

@ -31,7 +31,6 @@ class KeyboardClient;
class HIDManagement {
friend class KeyboardDevice;
friend class MouseDevice;
AK_MAKE_ETERNAL;
public:
HIDManagement();

View file

@ -11,7 +11,6 @@
namespace Kernel {
class KCOVDevice final : public BlockDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public:

View file

@ -13,7 +13,6 @@
namespace Kernel {
class MemoryDevice final : public CharacterDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public:

View file

@ -11,7 +11,6 @@
namespace Kernel {
class NullDevice final : public CharacterDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public:

View file

@ -30,7 +30,7 @@ UNMAP_AFTER_INIT void PCISerialDevice::detect()
// If this is the first port of the first pci serial device, store it as the debug PCI serial port (TODO: Make this configurable somehow?)
if (!is_available())
s_the = serial_device;
// NOTE: We intentionally leak the reference to serial_device here, as it is eternal
// NOTE: We intentionally leak the reference to serial_device here.
}
dmesgln("PCISerialDevice: Found {} @ {}", board_definition.name, device_identifier.address());

View file

@ -14,7 +14,6 @@
namespace Kernel {
class PCISerialDevice {
AK_MAKE_ETERNAL
public:
static void detect();
static SerialDevice& the();

View file

@ -11,7 +11,6 @@
namespace Kernel {
class RandomDevice final : public CharacterDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public:

View file

@ -12,7 +12,6 @@
namespace Kernel {
class SerialDevice final : public CharacterDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public:

View file

@ -39,7 +39,6 @@ struct VMWareCommand {
};
class VMWareBackdoor {
AK_MAKE_ETERNAL;
public:
VMWareBackdoor();

View file

@ -11,7 +11,6 @@
namespace Kernel {
class ZeroDevice final : public CharacterDevice {
AK_MAKE_ETERNAL
friend class DeviceManagement;
public: