我被分配到另一个人编写的内核模块上工作,我现在没有代码,并且存在“原子调度”错误。
据我所知,这是由在自旋锁防护的关键部分睡觉造成的。
是否有任何可以帮助我找到源的内容 - 睡眠发生的关键部分或睡眠尝试期间获得的自旋锁? (通常任何有关调试自旋锁的好文章的建议都将受到赞赏)。
此致 雷
答案 0 :(得分:0)
您可以使用Kprobes动态中断任何内核函数:
关于Linux中的分析有一篇很好的文章,但它是用俄语写的。
Mechanisms of profiling in Linux
此外,用于调试Linux内核模块(LKM)的旧学校是使用printk()函数。
您可以编写一个宏,它将显示文件名,功能名称,行号。
我为自己写了一个类似的宏。
我希望你在不久的将来解决问题!