1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 10: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

@ -23,7 +23,7 @@ class AHCIController final : public ATAController
, public PCI::Device {
friend class AHCIPortHandler;
friend class AHCIPort;
AK_MAKE_ETERNAL
public:
UNMAP_AFTER_INIT static NonnullRefPtr<AHCIController> initialize(PCI::DeviceIdentifier const& pci_device_identifier);
virtual ~AHCIController() override;

View file

@ -37,7 +37,7 @@ class IDEController;
class IDEChannel : public RefCounted<IDEChannel>
, public IRQHandler {
friend class IDEController;
AK_MAKE_ETERNAL
public:
enum class ChannelType : u8 {
Primary,

View file

@ -19,7 +19,6 @@ class AsyncBlockDeviceRequest;
class IDEController final : public ATAController
, public PCI::Device {
AK_MAKE_ETERNAL
public:
static NonnullRefPtr<IDEController> initialize(PCI::DeviceIdentifier const&, bool force_pio);
virtual ~IDEController() override;

View file

@ -18,7 +18,6 @@ namespace Kernel {
class AsyncBlockDeviceRequest;
class RamdiskController final : public StorageController {
AK_MAKE_ETERNAL
public:
public:
static NonnullRefPtr<RamdiskController> initialize();

View file

@ -16,7 +16,7 @@ class RamdiskController;
class RamdiskDevice final : public StorageDevice {
friend class RamdiskController;
friend class DeviceManagement;
AK_MAKE_ETERNAL
public:
static NonnullRefPtr<RamdiskDevice> create(const RamdiskController&, NonnullOwnPtr<Memory::Region>&& region, int major, int minor);
virtual ~RamdiskDevice() override;

View file

@ -22,7 +22,6 @@ namespace Kernel {
class AsyncBlockDeviceRequest;
class StorageDevice;
class StorageController : public RefCounted<StorageController> {
AK_MAKE_ETERNAL
public:
virtual ~StorageController() = default;

View file

@ -19,7 +19,6 @@ namespace Kernel {
class PartitionTable;
class StorageManagement {
AK_MAKE_ETERNAL;
public:
StorageManagement();