使用 module_init 我创建并唤醒了一个 kthread。为了让它保持活力并完成我的功能任务,我使用了以下方法。这是我可以让它运行的唯一方法,因为我在中断中更改标志。现在我正面临着代码性能令人难以置信的下降。我将问题缩小到以下代码:
while(1){
//Do my tasks here after changing flag
while(get_flag() ){ //Waiting for a flag, to basically do my Func in the previous line.
schedule();
}
}//to keep a kthread alive after initial create.
关于降低性能的详细信息:不使用包含调度的第二个 while(1),我的代码中的数据传输速率为 35MB/s,但使用这条小线,它下降到 5MB/s。
有没有其他方法可以让 kthread 休眠并等待标志更改?