mirror of
https://github.com/subhobhai943/SUB-OS.git
synced 2026-10-25 16:52:29 +00:00
37 lines
881 B
C
37 lines
881 B
C
#ifndef _MM_PMM_H
|
|
#define _MM_PMM_H
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
|
|
#define PMM_PAGE_SIZE 4096
|
|
|
|
// E820 Memory Map entry structure
|
|
typedef struct {
|
|
uint64_t base;
|
|
uint64_t length;
|
|
uint32_t type;
|
|
uint32_t acpi_attr;
|
|
} __attribute__((packed)) e820_entry_t;
|
|
|
|
#define E820_TYPE_USABLE 1
|
|
#define E820_TYPE_RESERVED 2
|
|
#define E820_TYPE_ACPI_RECLAIM 3
|
|
#define E820_TYPE_ACPI_NVS 4
|
|
#define E820_TYPE_BAD 5
|
|
|
|
void pmm_init(void* memory_map, uint64_t memory_map_count);
|
|
void* pmm_alloc_page(void);
|
|
void* pmm_alloc_pages(size_t count);
|
|
void pmm_free_page(void* page);
|
|
void pmm_free_pages(void* page, size_t count);
|
|
|
|
uint64_t pmm_get_total_pages(void);
|
|
uint64_t pmm_get_used_pages(void);
|
|
uint64_t pmm_get_free_pages(void);
|
|
uint64_t pmm_get_total_memory(void);
|
|
uint64_t pmm_get_usable_memory(void);
|
|
|
|
#endif // _MM_PMM_H
|