Linux kernel 除了内核计时器,还有什么方法可以在设定的时间间隔内重复执行一个函数吗?

Linux kernel 除了内核计时器,还有什么方法可以在设定的时间间隔内重复执行一个函数吗?,linux-kernel,kernel,Linux Kernel,Kernel,我正在编写一个内核模块,作为内存存储。我想每10秒将数据备份到一个文件中。我认为内核计时器可以解决这个问题,但我认为它太麻烦了,无法使用,而且似乎无法使用kthread运行。除了使用内核计时器之外,在设定的时间间隔内重复执行函数的任何更好的方法。请给我推荐一些更好的方法。如果可能的话,告诉我更多关于如何实现的信息,或者给我一些关于其用法的参考。 谢谢我认为内核的计时器api使用起来并不麻烦,只需要调用两个函数(init_timer()和setup_timer())。参见此处示例:您可以查看中的计

我正在编写一个内核模块,作为内存存储。我想每10秒将数据备份到一个文件中。我认为内核计时器可以解决这个问题,但我认为它太麻烦了,无法使用,而且似乎无法使用kthread运行。除了使用内核计时器之外,在设定的时间间隔内重复执行函数的任何更好的方法。请给我推荐一些更好的方法。如果可能的话,告诉我更多关于如何实现的信息,或者给我一些关于其用法的参考。
谢谢

我认为内核的计时器api使用起来并不麻烦,只需要调用两个函数(init_timer()和setup_timer())。参见此处示例:

您可以查看
中的
计划延迟的工作()。在指定的延迟后在流程上下文中运行工作项的。您需要您的工作函数重新安排自己再次运行(即调用
schedule\u delayed\u work()
),但这是一个非常标准的操作

如果你真的想拥有自己的内核线程,你可以使用
schedule\u timeout()。或者去睡觉,用定时器来唤醒自己(我同意另一个答案——定时器API非常容易使用)