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