linux时间子系统(六)

本文深入探讨Linux内核的定时器子系统,包括timer_list结构、定时器的激活、修改、移除和延迟处理。通过 cascade 函数理解定时器的进位处理,解析 add_timer、mod_timer、del_timer 等关键操作,并介绍如何定义和初始化 timer_list 结构。
摘要由CSDN通过智能技术生成

3.1.4 定时器处理 

static inline void __run_timers(struct tvec_base *base)

{

        struct timer_list *timer;

 

        spin_lock_irq(&base->lock);

        while (time_after_eq(jiffies, base->timer_jiffies)) {

                struct list_head work_list;

                struct list_head *head = &work_list;

                int index = base->timer_jiffies & TVR_MASK;

 

                /*

                 * Cascade timers:

                 */

                if (!index &&

                        (!cascade(base, &base->tv2, INDEX(0))) &&

                                (!cascade(base, &base->tv3, INDEX(1))) &&

                                        !cascade(base, &base->tv4, INDEX(2)))

                        cascade(base, &base->tv5, INDEX(3));

                ++base->timer_jiffies;

                list_replace_init(base->tv1.vec + index, &work_list);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值