Linux kernel 产生cpu的机制

Linux kernel 产生cpu的机制,linux-kernel,Linux Kernel,我有一个模块,它创建了一个kthread。我希望这个kthread记录一些统计数据,然后生成cpu。它将在再次运行时记录统计信息。正确的方法是什么?是 set_tsk_need_reched(task); schedule(); 这样做的正确方法是什么?(这似乎没有达到我的预期)如果我正确地记得Linux内核有一个yield()函数,可以用来自动将处理器控制权传递给系统中的另一个线程(内核将自行决定下一个运行的线程)。一些注意事项: 您需要从线程的上下文中调用yield() 在此之后,您无

我有一个模块,它创建了一个kthread。我希望这个kthread记录一些统计数据,然后生成cpu。它将在再次运行时记录统计信息。正确的方法是什么?是

set_tsk_need_reched(task); 
schedule();

这样做的正确方法是什么?(这似乎没有达到我的预期)

如果我正确地记得Linux内核有一个yield()函数,可以用来自动将处理器控制权传递给系统中的另一个线程(内核将自行决定下一个运行的线程)。一些注意事项:

  • 您需要从线程的上下文中调用yield()
  • 在此之后,您无需显式调用调度程序。yield()代码将自行强制重新调度

评论一个旧线程,但希望它能避免人们犯这样的错误:如果你阅读core.c中的评论,它会说:“*永远不要使用这个函数,有99%的可能性你做得不对。”你应该改用cond_resched()。。。