Linux设备驱动之timer定时器与延时

本文深入探讨Linux设备驱动中的timer定时器原理,介绍了重要数据结构如expires和hrtimer,讲解了timer的初始化、触发及其使用方法,并通过示例展示其应用。同时,列举了一些常见的延时方法,包括sleep延时和忙等待延时,强调了它们在不同场景下的适用性。
摘要由CSDN通过智能技术生成

理论知识

原理介绍

软件意义上的定时器是依赖硬件定时器实现的,内核在时钟中断发生后检测各个定时器是否到期,如果到期,将到期的定时器的处理函数作为软中断的下半部执行。实质上,时钟中断处理程序会唤醒TIMER_SOFTIRQ软中断,运行当前处理器上到期的所有定时器。

timer定时器的重要数据结构
struct timer_list {
                /*
                 * All fields that change during normal runtime grouped to the
                 * same cacheline
                 */
                struct hlist_node   entry;
                unsigned long       expires;                          //定时器的到期时间(jiffies)
                void            (*function)(unsigned long);           //定时器时间溢出时的触发函数
                unsigned long       data;                             //function的传入参数
                u32         flags;
                int         slack;

            #ifdef CONFIG_TIMER_STATS
                int         start_pid;
                void            *start_site;
                char            start_comm[16];
            #endif
            #ifdef CONFIG_LOCKDEP
                struct lockdep_map  lockdep_map;
            #endif
            };

expires一般用户毫秒级别的定时器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值