当前位置: 首页 > news >正文

内核学习——6、timer的学习和使用

timer常用接口:

  • 1、初始化timer:
    void init_timer_key()
    {
    debug_init();
    do_init_timer(); //这里初始化了一些通用性参数,也初始化了链表节点
    }
  • 2、初始化完成后,需要使用add_timer函数将初始化的参数加到定时器链表中去
    注意:内核定时器是一个单次的定时器
    void add_timer()
    {
    BUG_ON(timer_pending(timer)); //检查该timer有没有被挂起
    mod_timer(timer, timer->expires); //,没有被挂起,则修改定时器到期时间
    }
    mod_timer函数还是调用mod_timer函数来加入定时器链表中的
  • 3、删除定时器:
    del_timer
  • 4、简单实例:
    #include <linux/time.h>
    /* 定义一个定时器指针*/
    static struct timer_list *timer;
    /参数是timer中的变量data/
    void func_handle(unsigned long data)
    {
    //做想做的事情
    /因为内核定时器是一个单次的定时器,所以如果想要多次重复定时时需要在定时器绑定的函数结尾重新装载时间,并启动定时/
    /kernel timer restatr/
    mod_timer(timer, jiffies + HZ/50)
    }

int xx_init(void)
{
timer = kzalloc(sizeof(struct timer_list), GFP_KERNEL)

init_timer(timer); //初始化定时器
timert->function = func_handle; //绑定定时时间到后的执行函数
timer->expites = jiffres + (HZ/50); //定时的时间点,当前时间的20ms之后
add_timer(timer); //添加并启动定时器
}
void xxx_exit(void)
{

del_timer(timer);
}
module_init(xxx_init);
module_exit(xxx_exit);

MODULE_LICENSE(“GPL”);

相关文章:

  • 聊聊分布式集群的基本概念
  • AI工具对音乐的影响
  • 只有你相信,客户才会相信
  • Linux下调试代码——gdb的使用
  • 深入理解计算机系统 CSAPP 家庭作业6.34
  • 零基础入门学用Arduino 第四部分(三)
  • 【单片机毕业设计选题24003】-基于STM32和阿里云的家庭安全监测系统
  • ARM架构简明教程
  • 项目3:从0开始的RPC框架(扩展版)-3
  • STM32学习笔记(八)--DMA直接存储器存取详解
  • css display:grid布局,实现任意行、列合并后展示,自适应大小屏幕
  • VMR,支持30+种编程语言的SDK版本管理器,支持Windows/MacOS/Linux。
  • 手写实现call函数和应用场景
  • 刷题记录(240619)
  • JSON学习
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【知识碎片】第三方登录弹窗效果
  • 03Go 类型总结
  • echarts的各种常用效果展示
  • Git 使用集
  • java2019面试题北京
  • JavaScript创建对象的四种方式
  • Java深入 - 深入理解Java集合
  • js继承的实现方法
  • PaddlePaddle-GitHub的正确打开姿势
  • php面试题 汇集2
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring声明式事务管理之一:五大属性分析
  • vuex 学习笔记 01
  • 近期前端发展计划
  • 精彩代码 vue.js
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前嗅ForeSpider采集配置界面介绍
  • 前嗅ForeSpider教程:创建模板
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 算法-图和图算法
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微服务框架lagom
  • 我看到的前端
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 异常机制详解
  • ​2021半年盘点,不想你错过的重磅新书
  • ‌移动管家手机智能控制汽车系统
  • #13 yum、编译安装与sed命令的使用
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #数据结构 笔记三
  • (160)时序收敛--->(10)时序收敛十
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?