[refactor] 整理注释
This commit is contained in:
+17
-18
@@ -50,16 +50,15 @@ inline void init_serial() {
|
||||
}
|
||||
}
|
||||
|
||||
// External: PIT IRQ handler defined in pit.cpp
|
||||
// 外部 PIT 中断处理函数,定义在 pit.cpp
|
||||
extern "C" void pit_irq_handler(void);
|
||||
|
||||
// PIC IRQ handler — dispatches IRQ 0 (timer)
|
||||
// PIC 中断处理 — 分发 IRQ 0(定时器)
|
||||
static void irq_handler(trap_frame* frame) {
|
||||
UINT8 vector = (UINT8)frame->vector;
|
||||
UINT8 irq = vector - PIC_IRQ_BASE;
|
||||
|
||||
// Send EOI BEFORE handling, so PIC can deliver new interrupts
|
||||
// immediately after a context switch inside the handler.
|
||||
// 先发送 EOI 再处理,这样上下文切换后 PIC 可以立即投递新中断
|
||||
pic_send_eoi(irq);
|
||||
|
||||
switch (irq) {
|
||||
@@ -81,7 +80,7 @@ extern "C" void kernel_main() {
|
||||
uefi_call_wrapper(ST->ConOut->ClearScreen, 1, ST->ConOut);
|
||||
serial_write("\n\n");
|
||||
|
||||
// init memory managers
|
||||
// 初始化内存管理器
|
||||
serial_write("Sylva: init PMM...\n");
|
||||
EFI_STATUS st = pmm_init();
|
||||
if (EFI_ERROR(st)) {
|
||||
@@ -96,7 +95,7 @@ extern "C" void kernel_main() {
|
||||
serial_write("Sylva: init heap...\n");
|
||||
init_heap();
|
||||
|
||||
// test kmalloc/kfree
|
||||
// 测试 kmalloc/kfree
|
||||
serial_write("Sylva: kmalloc test...\n");
|
||||
void* p1 = kmalloc(64);
|
||||
void* p2 = kmalloc(128);
|
||||
@@ -134,7 +133,7 @@ extern "C" void kernel_main() {
|
||||
// pf_print("Welcome to Sylva OS!\n");
|
||||
serial_write(" Kernel prepared well.\n");
|
||||
|
||||
// --- Interrupt infrastructure ---
|
||||
// 初始化中断基础设施
|
||||
serial_write("Sylva: init GDT...\n");
|
||||
gdt_init();
|
||||
|
||||
@@ -144,24 +143,24 @@ extern "C" void kernel_main() {
|
||||
serial_write("Sylva: init PIC...\n");
|
||||
pic_init();
|
||||
|
||||
// Register IRQ handler (vector 0x20 = PIC_IRQ_BASE + 0)
|
||||
// 注册 IRQ 处理函数(向量 0x20 = PIC_IRQ_BASE + 0)
|
||||
idt_set_handler(PIC_IRQ_BASE + 0, irq_handler);
|
||||
|
||||
serial_write("Sylva: init PIT...\n");
|
||||
pit_init();
|
||||
pit_set_tick_handler(scheduler_tick);
|
||||
|
||||
// Enable interrupts
|
||||
// 启用中断
|
||||
ASM("sti");
|
||||
serial_write("Sylva: interrupts enabled\n");
|
||||
|
||||
// --- Multitasking demo ---
|
||||
// 创建多任务演示
|
||||
serial_write("Sylva: creating tasks...\n");
|
||||
|
||||
// Init compositor (allocates back buffer, registers keyboard handler)
|
||||
// 初始化合成器(分配后台缓冲区,注册键盘处理)
|
||||
layer_init();
|
||||
|
||||
// Create desktop layer (full screen, z=0)
|
||||
// 创建桌面图层(全屏,z=0)
|
||||
layer_t* desktop = layer_create("desktop", LAYER_TYPE_DESKTOP, g_gfx.hr, g_gfx.vr);
|
||||
if (desktop) {
|
||||
layer_set_z(desktop, 0);
|
||||
@@ -172,7 +171,7 @@ extern "C" void kernel_main() {
|
||||
layer_set_pos(desktop, 0, 0);
|
||||
}
|
||||
|
||||
// Create window 1 (centered)
|
||||
// 创建窗口 1(居中)
|
||||
layer_t* win1 = layer_create("window_1", LAYER_TYPE_WINDOW, 300, 200);
|
||||
if (win1) {
|
||||
layer_set_pos(win1, (SSINT32)(g_gfx.hr / 2) - 150, (SSINT32)(g_gfx.vr / 2) - 100);
|
||||
@@ -183,7 +182,7 @@ extern "C" void kernel_main() {
|
||||
draw_set_default_target();
|
||||
}
|
||||
|
||||
// Create window 2 (offset from center)
|
||||
// 创建窗口 2(偏离中心)
|
||||
layer_t* win2 = layer_create("window_2", LAYER_TYPE_WINDOW, 250, 180);
|
||||
if (win2) {
|
||||
layer_set_pos(win2, (SSINT32)(g_gfx.hr / 2) - 50, (SSINT32)(g_gfx.vr / 2) - 40);
|
||||
@@ -194,7 +193,7 @@ extern "C" void kernel_main() {
|
||||
draw_set_default_target();
|
||||
}
|
||||
|
||||
// Compositor task (replaces the old demo tasks)
|
||||
// 合成器任务
|
||||
task_create("compositor", layer_compositor_task);
|
||||
|
||||
serial_write("Sylva: disk read benchmark...\n");
|
||||
@@ -220,7 +219,7 @@ extern "C" void kernel_main() {
|
||||
serial_write_hex(kbps);
|
||||
serial_write(" KiB/s)\n");
|
||||
|
||||
// --- TTF demo ---
|
||||
// TTF 渲染演示
|
||||
serial_write("Sylva: ttf_open...\n");
|
||||
ttf_face_t* face = ttf_open(ttf_buf, ttf_size);
|
||||
if (!face) {
|
||||
@@ -228,7 +227,7 @@ extern "C" void kernel_main() {
|
||||
} else {
|
||||
serial_write("Sylva: ttf_open OK\n");
|
||||
|
||||
// Create an overlay layer for TTF output (sits above the two demo windows)
|
||||
// 创建 TTF 文本覆盖图层
|
||||
const UINT32 TL_W = 500, TL_H = 200;
|
||||
layer_t* text_layer = layer_create("ttf_text", LAYER_TYPE_WINDOW, TL_W, TL_H);
|
||||
if (text_layer) {
|
||||
@@ -238,7 +237,7 @@ extern "C" void kernel_main() {
|
||||
draw_set_target(text_layer->buffer, TL_W, TL_H);
|
||||
draw_rect(0, 0, TL_W - 1, TL_H - 1, clear);
|
||||
|
||||
// Render at 4 sizes + mixed CJK
|
||||
// 渲染多种字号和中日韩字符
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL white = {255, 255, 255, 0};
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL yellow = {255, 240, 80, 0};
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL cyan = {80, 220, 255, 0};
|
||||
|
||||
Reference in New Issue
Block a user