#ifndef PMM_H #define PMM_H #include #include "multiboot.h" #define PAGE_SIZE 4096 // Инициализация: передаем инфу от GRUB и адрес конца ядра из линкера void pmm_init(struct multiboot_info* mbi, uint32_t kernel_end); // Выделить одну страницу памяти (возвращает физический адрес) void* pmm_alloc_page(void); // Освободить страницу памяти по адресу void pmm_free_page(void* addr); typedef struct { uint32_t total_memory; // Всего памяти в байтах uint32_t used_memory; // Занято в байтах uint32_t free_memory; // Свободно в байтах uint32_t total_pages; // Всего страниц uint32_t used_pages; // Занято страниц uint32_t free_pages; // Свободно страниц } pmm_stats_t; void pmm_get_stats(void); pmm_stats_t* pmm_get_stats_ptr(void); #endif