linux 内核回调,如何在Linux内核模块中添加定期计时器回调

maybe there is a standard kernel API for that

当然有.在内核模块中需要计时器可能并不稀奇.

我对该API不太了解,但是我知道它存在.如果您要正确地编写内核模块,则应该有一本书.有几种.1无论如何,一种传统方法是:

#include

schedule_timeout(jiffies);

那是被动的睡眠.抖动是基于处理器内250 HZ刻度的单位,尽管这是可以配置的.该标头具有各种其他功能,这里的a brief discussion涉及2.6内核,但是我认为3.x仍必须与此兼容,因为许多源文件(包括驱动程序)都早于该版本.有一种简单的方法可以找出异常.

如果您想延迟一秒钟,可以使用Jiffies.常规内核由于调度程序延迟而导致毫秒级被动睡眠的粒度是一个问题,但是ktime.h中也有一个纳秒粒度的API(该链接再次来自2.6内核,但该文件在3.11中仍然是2005年的来源,因此未更改).请记住,Linux还具有纳秒级粒度的用户空间计时器,但这并不意味着它们会因调度程序延迟而实际上可以在该级别上计时(假定内核空间中的被动计时器也是如此).

您可以访问RTC而不是使用处理器/内核滴答,但是有一些缺点:

>并非所有系统实际上都有一个.

>表示忙循环.

并没有真正的优势. AFAIK RTC被认为比处理器滴答更准确.

1您最好使用的另一个资源是Linux Kernel Mailing List(LKML),这是开发人员所在的位置,他们确实会回答问题.警告该列表每天有成百上千条消息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值