Espresso 0.0.2c

This commit is contained in:
2026-03-20 16:57:08 -05:00
parent 021fdbbcef
commit 5971218b56
77 changed files with 4538 additions and 518 deletions

View File

@ -111,7 +111,12 @@ void free(void* ptr)
block_t* curr = free_list;
while (curr && curr->next)
{
if (curr->free && curr->next->free)
/*if (curr->free && curr->next->free)
{
curr->size += BLOCK_SIZE + curr->next->size;
curr->next = curr->next->next;
}*/
if (curr->free && curr->next->free && (uint8_t*)curr + BLOCK_SIZE + curr->size == (uint8_t*)curr->next)
{
curr->size += BLOCK_SIZE + curr->next->size;
curr->next = curr->next->next;

View File

@ -12,6 +12,10 @@ static size_t total_pages;
#define BITMAP_CLEAR(i) (bitmap[(i) / 8] &= ~(1 << ((i) % 8)))
#define BITMAP_TEST(i) (bitmap[(i) / 8] & (1 << ((i) % 8)))
extern uint32_t __kernel_start;
extern uint32_t __kernel_end;
void pmm_init(multiboot_info_t* mb)
{
#ifdef _DEBUG
@ -45,6 +49,18 @@ void pmm_init(multiboot_info_t* mb)
}
}
total_pages = MAX_PAGES;
uintptr_t start = (uintptr_t)&__kernel_start;
uintptr_t end = (uintptr_t)&__kernel_end;
start &= ~0xFFF;
end = (end + 0xFFF) & ~0xFFF;
for (uintptr_t addr = start; addr < end; addr += 0x1000)
{
size_t idx = addr / 0x1000;
BITMAP_SET(idx); // Mark kernel pages as USED
}
#ifdef _DEBUG
printf("[ PMM ] Physical memory manager initialized\n");
@ -55,6 +71,14 @@ void* pmm_alloc_page(void)
{
for (uint32_t i = 0; i < total_pages; ++i)
{
void* page = (void*)(i * 4096);
if ((uintptr_t)page >= (uintptr_t)&__kernel_start &&
(uintptr_t)page < (uintptr_t)&__kernel_end)
{
printf("PMM allocating inside kernel at %x\n", page);
}
if (!BITMAP_TEST(i))
{
BITMAP_SET(i);