From 2c17e426c165891e12ddf3a0ad406ca3bd718710 Mon Sep 17 00:00:00 2001 From: pyao12 Date: Sun, 24 May 2026 19:48:37 +0800 Subject: [PATCH] [fix] Serial & PFPrint --- include/BUILD_INFOS.h | 4 +--- kernel/memory/heap.cpp | 31 ++++++++++--------------- kernel/memory/pmm.cpp | 52 ++++++++++++++++++------------------------ kernel/serial.cpp | 5 ---- 4 files changed, 35 insertions(+), 57 deletions(-) diff --git a/include/BUILD_INFOS.h b/include/BUILD_INFOS.h index 76ddf40..00756cc 100644 --- a/include/BUILD_INFOS.h +++ b/include/BUILD_INFOS.h @@ -1,5 +1,3 @@ #pragma once -// 存放各类参数定义,后续给CI用 - -#define ENABLE_SERIAL_PRINTS true \ No newline at end of file +// 存放各类参数定义,后续给CI用 \ No newline at end of file diff --git a/kernel/memory/heap.cpp b/kernel/memory/heap.cpp index 1cf4d0f..8226a14 100644 --- a/kernel/memory/heap.cpp +++ b/kernel/memory/heap.cpp @@ -1,7 +1,6 @@ #include #include #include -#include struct heap_block { UINTN size; // includes header; bit 0 = 1 used, 0 free @@ -67,11 +66,9 @@ static void heap_expand(UINTN min_size) { g_heap_end = (UINT8*)new_block + BLOCK_SIZE(new_block); } - if (ENABLE_SERIAL_PRINTS) { - serial_write("HEAP: expanded by "); - serial_write_hex(pages * PAGE_SIZE); - serial_write(" bytes\n"); - } + serial_write("HEAP: expanded by "); + serial_write_hex(pages * PAGE_SIZE); + serial_write(" bytes\n"); } void init_heap() { @@ -89,13 +86,11 @@ void init_heap() { initial->next = NULL; g_heap_free_list = initial; - if (ENABLE_SERIAL_PRINTS) { - serial_write("HEAP: init OK, "); - serial_write_hex(HEAP_INIT_PAGES * PAGE_SIZE); - serial_write(" bytes @ "); - serial_write_hex((UINTN)mem); - serial_write("\n"); - } + serial_write("HEAP: init OK, "); + serial_write_hex(HEAP_INIT_PAGES * PAGE_SIZE); + serial_write(" bytes @ "); + serial_write_hex((UINTN)mem); + serial_write("\n"); } void* kmalloc(UINTN size) { @@ -125,7 +120,7 @@ void* kmalloc(UINTN size) { block->size = block_sz | 1; // mark used } - if (ENABLE_SERIAL_PRINTS && size > 1024) { + if (size > 1024) { serial_write("HEAP: kmalloc "); serial_write_hex(size); serial_write(" -> "); @@ -180,11 +175,9 @@ void kfree(void* ptr) { block->next = *prev; *prev = block; - if (ENABLE_SERIAL_PRINTS) { - serial_write("HEAP: kfree @ "); - serial_write_hex((UINTN)ptr); - serial_write("\n"); - } + serial_write("HEAP: kfree @ "); + serial_write_hex((UINTN)ptr); + serial_write("\n"); } void* kcalloc(UINTN num, UINTN size) { diff --git a/kernel/memory/pmm.cpp b/kernel/memory/pmm.cpp index 916e5d0..82c3f57 100644 --- a/kernel/memory/pmm.cpp +++ b/kernel/memory/pmm.cpp @@ -1,7 +1,6 @@ #include #include #include -#include pmm_t g_pmm; @@ -158,17 +157,15 @@ EFI_STATUS pmm_init() { uefi_call_wrapper((void*)ST->BootServices->FreePool, 1, mem_map); - if (ENABLE_SERIAL_PRINTS) { - serial_write("PMM: init OK, total "); - serial_write_hex(total_pages); - serial_write(" pages ("); - serial_write_hex(total_free / (1024*1024)); - serial_write(" MB free), bitmap "); - serial_write_hex(bitmap_pages); - serial_write(" pages @ "); - serial_write_hex(bitmap_addr); - serial_write("\n"); - } + serial_write("PMM: init OK, total "); + serial_write_hex(total_pages); + serial_write(" pages ("); + serial_write_hex(total_free / (1024*1024)); + serial_write(" MB free), bitmap "); + serial_write_hex(bitmap_pages); + serial_write(" pages @ "); + serial_write_hex(bitmap_addr); + serial_write("\n"); return EFI_SUCCESS; } @@ -191,11 +188,9 @@ void* pmm_alloc_pages(UINTN n) { bitmap_set(idx); g_pmm.free_pages--; - if (ENABLE_SERIAL_PRINTS) { - serial_write("PMM: alloc 1 page @ "); - serial_write_hex((UINTN)page); - serial_write("\n"); - } + serial_write("PMM: alloc 1 page @ "); + serial_write_hex((UINTN)page); + serial_write("\n"); return page; } @@ -214,13 +209,11 @@ void* pmm_alloc_pages(UINTN n) { } g_pmm.free_pages -= n; - if (ENABLE_SERIAL_PRINTS) { - serial_write("PMM: alloc "); - serial_write_hex(n); - serial_write(" pages @ "); - serial_write_hex((UINTN)base); - serial_write("\n"); - } + serial_write("PMM: alloc "); + serial_write_hex(n); + serial_write(" pages @ "); + serial_write_hex((UINTN)base); + serial_write("\n"); return base; } } else { @@ -247,14 +240,13 @@ void pmm_free_pages(void* addr, UINTN n) { g_pmm.free_list_head = page; } - if (ENABLE_SERIAL_PRINTS) { - serial_write("PMM: free "); - serial_write_hex(n); - serial_write(" pages @ "); - serial_write_hex((UINTN)addr); + serial_write("PMM: free "); + serial_write_hex(n); + serial_write(" pages @ "); + serial_write_hex((UINTN)addr); serial_write("\n"); } -} + UINTN pmm_get_free_count() { return g_pmm.free_pages; diff --git a/kernel/serial.cpp b/kernel/serial.cpp index 5c29238..a98d81a 100644 --- a/kernel/serial.cpp +++ b/kernel/serial.cpp @@ -1,7 +1,5 @@ #include #include -#include -#include serial_context g_serial; @@ -11,14 +9,12 @@ void serial_init(EFI_SERIAL_IO_PROTOCOL *SerialIo) { } void serial_write_char(char c) { - // 不要直接调用,ENABLE_SERIAL_PRINTS有问题,因此不会打印DEBUG if (!g_serial.SerialIo) { uefi_call_wrapper((void*)ST->ConOut->OutputString, 2, ST->ConOut, L"serial: null io\n"); return; } UINTN size = 1; EFI_STATUS status = uefi_call_wrapper((void*)g_serial.SerialIo->Write, 3, g_serial.SerialIo, &size, &c); - // if (ENABLE_SERIAL_PRINTS) pf_print((const char*) c); if (status != EFI_SUCCESS) { uefi_call_wrapper((void*)ST->ConOut->OutputString, 2, ST->ConOut, L"serial: write failed\n"); } @@ -29,7 +25,6 @@ void serial_write(const char *str) { uefi_call_wrapper((void*)ST->ConOut->OutputString, 2, ST->ConOut, L"serial: null io\n"); return; } - if (ENABLE_SERIAL_PRINTS) pf_print(str); while (*str) { serial_write_char(*str++); }