最佳答案
你知道调用schedule()的频率是多少吗?它可能比计算机可以将打印缓冲区刷新到日志更快.我建议使用另一种调试方法.例如,通过将kernel.syms文件作为符号表加载并设置断点,在QEMU中运行内核并使用远程GDB.其他虚拟化软件提供类似功能.或者以手动方式完成并遍历您的代码.在中断处理程序中使用printk通常是个坏主意(除非您即将恐慌或停顿).
如果您看到的错误没有经常发生,请考虑使用BUG()或BUG_ON(cond).这些是条件错误消息,不应该像非条件printk那样频繁发生
编辑schedule()函数本身通常是一个坏主意(除非你想支持多个运行队列等…).相反,修改调度程序类会更好,更容易.查看CFS调度程序的代码来执行此操作.如果你想完成别的事情,我可以给出更好的建议.