Files
2026-05-03 13:05:55 +04:00

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);