Linux 内核定时器

这篇具有很好参考价值的文章主要介绍了Linux 内核定时器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、相关知识点

(一)知识点
1、内核定时器分类
    1)标准定时器或系统定时器
    2)高精度定时器(HRT)
        头文件:#include <linux/hrtimer.h>
2、检查系统是否可用HRT
    1)查看内核配置文件
        
CONFIG_HIGH_RES_TIMERS=y
    2)查看机器
        cat proc/timer_list  | grep "resolution" 
        结果 .resolution: 1 nsecs 表示可用HRT(高精度定时器),如下图:
         Linux 内核定时器,Android驱动,linux,定时器,android驱动
(二)定时器API
1、初始化定时器
#define timer_setup(timer, callback, flags)
    作用:
        准备一个计时器以供首次使用
    参数:
        timer:定时器
        callback:定时器到期时调用的函数
        flags:TIMER_*标记
2、注册定时器
void add_timer(struct timer_list *timer);
作用:
        用于向Linux内核注册定时器,使用add_timer函数向内核注册定时器以后,定时器就会开始运行。
    参数:
        timer:定时器
3、删除定时器
 int del_timer(struct timer_list * timer);
    作用:
        用于删除一个定时器,不管定时器有没有被激活
    参数:
        timer:定时器
    返回值:
        1,定时器已被激活状态
        0,定时器没有被激活状态
4、设置定时器值
int mod_timer(struct timer_list *timer, unsigned long expires);
    作用:
        用于修改定时器值,如果定时器还没激活,则会激活定时器
    参数:
        timer:定时器
        expires:超时时间
    返回值:
        0,调用mod_timer函数前定时器未被激活
        1,调用mod_timer函数前定时器已被激活

 二、程序例程

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/timer.h>

static struct timer_list my_timer;

//定时器回调函数
void my_timer_callback(struct timer_list *t)
{
    pr_info("%s called (%ld.)\n",__func__,jiffies);
}

static int __init my_init(void)
{
    int ret;

    pr_info("Timer module loaded\n");

    timer_setup(&my_timer,my_timer_callback,0);  //设置定时器
    ret = mod_timer(&my_timer,jiffies + msecs_to_jiffies(300)); //设置定时器时间,并启动
    if (ret) {
        pr_err("Timer firing failed\n");
    }

    return 0;
}

static void __exit my_exit(void)
{
    int ret;

    ret = del_timer(&my_timer); //释放定时器
    if (ret) {
        pr_err("The timer is still in use ...\n");
    }

    pr_info("Timer module unloaded\n");
}

module_init(my_init);
module_exit(my_exit);
MODULE_DESCRIPTION("Standard timer example");
MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("ChaoQing");

文章来源地址https://www.toymoban.com/news/detail-672902.html

到了这里,关于Linux 内核定时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 09_Linux内核定时器

    目录 Linux时间管理和内核定时器简介 内核定时器简介 Linux内核短延时函数 定时器驱动程序编写 编写测试APP 运行测试          学习过UCOS或FreeRTOS的同学应该知道, UCOS或FreeRTOS是需要一个硬件定时器提供系统时钟, 一般使用Systick作为系统时钟源。同理 , Linux要运行 , 也是需

    2024年02月13日
    浏览(41)
  • Linux内核 -高精度定时器

    高精度定时器使用示例

    2024年01月19日
    浏览(54)
  • Linux 内核定时器(高级字符设备五)

      在 Linux 内核中很多函数是基于定时器进行驱动的,但是内核定时器的精度并不高,所以不能作为高精度定时器使用。并且内核定时器的运行没有周期性,到达计时终点后会自动关闭。如果要实现周期性定时,就要在定时处理函数中重新开启定时器。   Linux 内核中使用

    2024年02月08日
    浏览(41)
  • 【Orangepi Zero2 全志H616】驱动舵机控制 / Linux定时器(signal、setitimer)

    一、SG90舵机开发 舵机基本介绍 二、Linux定时器 signal 函数 setitimer 函数原型 signal、setitimer函数API调用 三、舵机 软件PWM实现 如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制用处: 垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等

    2024年02月05日
    浏览(52)
  • 嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第二天-ARM中断、定时器、看门狗(物联技术666)

    链接:https://pan.baidu.com/s/1E4x2TX_9SYhxM9sWfnehMg?pwd=1688 提取码:1688 上午:中断           吕峰老师 下午:定时器 教学内容: 一、中断 ARM 中断分为二级,分为一级中断和二级中断,二级中断为子中断,对于 ARM 来说有 50 个中断源, 其中有 32+ ( EINT23-4 ) 23-4+1-2=50 子中断源

    2024年02月19日
    浏览(60)
  • Linux定时器

    Linux定时器是一种 软件机制 ,用于在指定的时间间隔或特定时间点执行特定的任务。它是 基于内核的机制 ,可以用于各种应用场景,如定时任务调度、延时处理、周期性事件触发等。 运作机制(工作原理):Linux定时器的工作原理主要分为两个部分:定时器的创建和定时器

    2024年02月03日
    浏览(47)
  • 【Linux】Linux定时器使用及代码案例

    在 Linux 中,可以使用定时器来实现一些定时任务,例如定时发送信号、定时执行某个函数等。定时器的初始化通常包括以下几个步骤: 定义定时器结构体:首先需要定义一个定时器结构体,用于存储定时器的相关信息。在 Linux 中,可以使用 timer_t 类型来表示定时器结构体。

    2024年02月04日
    浏览(37)
  • Linux 中的几种定时器

    在linux系统中定时器有分为软定时和硬件定时器。硬件定时器一般指的是CPU的一种底层寄存器,它负责按照固定时间频率产生中断信号,形成信号源。基于硬件提供的信号源,系统就可以按照信号中断来计数,计数在固定频率下对应固定的时间,根据预设的时间参数即可产生

    2024年02月05日
    浏览(49)
  • lv14 内核定时器 11

    硬件有一个时钟装置,该装置每隔一定时间发出一个时钟中断( 称为一次时钟嘀嗒-tick ),对应的中断处理程序就将 全局变量jiffies_64加1 jiffies_64 是一个全局64位整型, jiffies全局变量为其低32位的全局变量, 程序中一般用jiffies HZ:可配置的宏,表示1秒钟产生的时钟中断次数

    2024年01月22日
    浏览(38)
  • 【Linux 裸机篇(八)】I.MX6U EPIT 定时器中断、定时器按键消抖

    EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的定时器还有很多其它的功能,比如输入捕获、 PWM 输出等等。但是 I.MX6U 的 EPIT 定时器只是完成周期性中断定时的,仅此一

    2024年02月02日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包