From: acevest Date: Mon, 26 Jan 2026 07:59:29 +0000 (+0800) Subject: 修复AP在调用print相关逻辑时误修改了BSP用到的preempt_count变量导致不能正常切换进程的问题 X-Git-Url: http://repos.zhaoyanbai.com/Mou_128.png?a=commitdiff_plain;h=71eb27f4f3ed6747c189818b50a5e84841783a6b;p=kernel.git 修复AP在调用print相关逻辑时误修改了BSP用到的preempt_count变量导致不能正常切换进程的问题 --- diff --git a/kernel/printk.c b/kernel/printk.c index 635820d..8966a61 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -55,11 +55,15 @@ extern tty_t* const monitor_tty; int printlo(unsigned int xpos, unsigned int ypos, const char* fmtstr, ...) { static char plobuf[1024]; char* args = (char*)(((char*)&fmtstr) + 4); - ENTER_CRITICAL_ZONE(EFLAGS); + + unsigned long eflags; + irq_save(eflags); + int size = vsprintf(plobuf, fmtstr, args); tty_write_at(monitor_tty, xpos, ypos, plobuf, (size_t)size); - LEAVE_CRITICAL_ZONE(EFLAGS); + irq_restore(eflags); + return 0; }