27 lines
763 B
C
27 lines
763 B
C
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
// Copyright (c) 2026 0xKSor
|
|
|
|
#pragma once
|
|
#include <Types.h>
|
|
|
|
enum {
|
|
kHeapSizePages = 1024,
|
|
kHeapBlockHeaderMagic = 0x43555445, // CUTE
|
|
kKernelHeapStart = 0xFFFFFFFFC0000000
|
|
};
|
|
|
|
static inline Address VMPhysToHeap(Address phys) { return phys + kKernelHeapStart; }
|
|
static inline Address VMHeapToPhys(Address heap) { return heap - kKernelHeapStart; }
|
|
|
|
typedef struct __attribute__((aligned(16))) VMHeapBlockHeader {
|
|
UInt64 magic;
|
|
struct VMHeapBlockHeader* next;
|
|
struct VMHeapBlockHeader* previous;
|
|
UInt64 size;
|
|
Boolean isFree;
|
|
} VMHeapBlockHeader;
|
|
|
|
void HeapInitialize();
|
|
Pointer HeapAllocate(Size size);
|
|
void HeapFree(Pointer pointer);
|
|
Pointer HeapResize(Pointer pointer, Size newSize); |