We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
当执行用户级别的 getchar() 时,过多地调用 printl() 打印 log 似乎会导致奇怪的 panic,比如 Invaild OPCode 或者 GenernalPortection,亦可能导致键盘无响应:无法进入 kb_handle() 函数,而时钟中断正常。
getchar()
printl()
kb_handle()
如果将 printl() 替换为空语句,问题似乎不再出现,但是现在 log 仍然非常需要,因此暂不改动。 这可能和 printl() 中的 IO 操作比较耗时有关系。
#ifdef __LOG_ON - #define printl(...) _printl(__VA_ARGS__) + #define printl(...) ; #else - #define printl(...) _print_null(__VA_ARGS__) + #define printl(...) ; #endif
The text was updated successfully, but these errors were encountered:
无法稳定复现该 bug,猜测是因为多个进程对 proc 变量和 ptable 表的操作产生的冲突。
有趣的现象:
进程一 init 有时会在 0xc000000d 处发生错误,出错指令是 int 0x80,但实际上进程一的 0xc000000d 处是 jmp $ ,对于其他用户程序,0xc0000000 处才是 int 0x80指令,即,进程空间和 proc 变量不对应。
init
0xc000000d
int 0x80
jmp $
0xc0000000
Sorry, something went wrong.
add cli-sti pair to prevent from panic or freeze(#2), god bless
e3316bf
* little fix of exec() in proc/exec.c
No branches or pull requests
当执行用户级别的
getchar()
时,过多地调用printl()
打印 log 似乎会导致奇怪的 panic,比如 Invaild OPCode 或者 GenernalPortection,亦可能导致键盘无响应:无法进入kb_handle()
函数,而时钟中断正常。如果将
printl()
替换为空语句,问题似乎不再出现,但是现在 log 仍然非常需要,因此暂不改动。这可能和
printl()
中的 IO 操作比较耗时有关系。The text was updated successfully, but these errors were encountered: