首页 > 系统相关 >2023.7.15 linux timer

2023.7.15 linux timer

时间:2023-07-15 23:57:11浏览次数:35  
标签:HZ 定时器 15 struct list timer 2023.7 tick

Dynamic tick/tickless kernel

If, however, a CPU leaves the idle state upon an interrupt (the architecture code calls handle_IRQ(), which indirectly calls tick_irq_enter()), this CPU tick device is enabled (first in one-shot mode), and before it performs any task, the tick_nohz_irq_ enter() function is called to ensure that jiffies are up to date so that the interrupt handler does not have to deal with a stale jiffy value, and then it resumes the periodic tick, which is kept active until the next call to tick_nohz_idle_stop_tick() (which is essentially called from do_idle()).

Using standard kernel low-precision (low-res) timers    CONFIG_HZ

Jiffies and HZ    zcat /proc/config.gz |grep CONFIG_HZ  ;    #Jiffies每秒增加HZ次,一次tick 就是 1/HZ 秒

Kernel timer APIs

定时器:struct timer_list { struct hlist_node entry; unsigned long expires; void (*function)(struct timer_list *); u32 flags; );

void timer_setup( struct timer_list *timer,  void (*function)( struct timer_list *),  unsigned int flags);  #动态设置一个定时器

#define DEFINE_TIMER(_name, _function) [...]    #静态设置定时器的宏

int mod_timer(struct timer_list *timer, unsigned long expires);  #修改一个定时器,重设它的到期时间,return 0 如果timer先前是不活动的,timer pending 或在执行func则return 1;

void add_timer(struct timer_list *timer);    #启动定时器,需要先把定时器设置好;比如 my_timer.expires = jiffies + ((12 * HZ) / 10); /* 1.2s */ add_timer(&my_timer);

删除或取消定时器:

int del_timer(struct timer_list *timer);    #return 0 if timer is inactive,else 1

int del_timer_sync(struct timer_list *timer);    #会等待每个核心的定时器的func完成后才return,非原子操作专用

int timer_pending(const struct timer_list *timer); #检查timer 状态

 

 

标签:HZ,定时器,15,struct,list,timer,2023.7,tick
From: https://www.cnblogs.com/yangdinshan/p/17557252.html

相关文章

  • 2023.7.15
    今天还是在看ret2dlresolve的PartialRELRO部分,因为ctfwiki上几乎只包含个没多少注释的exp,所以又去网上找其他博客来看,中间遇到栈迁移相关的东西不太理解,去问了学长弄懂了一些,自己想和上网查弄懂了一些,但是总体还不是特别清楚。今天说学也没学多少东西,中间想问题的时候还不小心睡......
  • 7月15日。【“你听到的oasis,是1996年的oasis,你看到的太阳,是8分钟前的太阳,这就是这个
    7月15日。【“你听到的oasis,是1996年的oasis,你看到的太阳,是8分钟前的太阳,这就是这个世界的真实,一切美好的都是过去”】主播今天自闭了。小丑写了一天都没写出来。我果然是小丑。然后把草稿纸全撕了,晚饭也没去吃,可也没去上,行李箱都收好了准备直接回无锡不学了。傻逼小丑写你......
  • 第三次周总结7月9日到7月15日
    7月9日到7月15日。暑假生活第1周。7月9日,我回到了家乡。第1天我整理了一下家里面的情况。在晚上的时候,看了一下整个学期的学习总结。我计划第1个月开始学习相应的内容。我打开了黑马程序员的javaweb。7月10日我打开了eclipse学习了一下系统的css.我发现css的内容,特别的难学。Cs......
  • 2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一
    2023-07-15:给你一个非递减的正整数数组nums和整数K,判断该数组是否可以被分成一个或几个长度至少为K的不相交的递增子序列。输入:nums=[1,2,2,3,3,4,4],K=3。输出:true。答案2023-07-15:大体步骤如下:1.初始化计数变量cnt和最大计数变量maxCnt,初始值都为1。2.从索引......
  • 7.10—7.15
    7.10-7.13和家人去徐州办事每日阅读《大道至简》pta计划搁置 7.14今日计划:跟进Java视频教学(完成)每日pta练习(完成) 7.15今日计划:跟进Java视频练习(完成)复习高数(完成)新计划:每日学习六级单词(完成)休闲:浏览电影《奔腾年代》(完成)......
  • 7.15
    今天学习类和对象了解类和对象的基本概念类和对象的定义和使用还有static关键字晚上一会睡觉明天计划学习java  ......
  • 2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一
    2023-07-15:给你一个非递减的正整数数组nums和整数K,判断该数组是否可以被分成一个或几个长度至少为K的不相交的递增子序列。输入:nums=[1,2,2,3,3,4,4],K=3。输出:true。答案2023-07-15:大体步骤如下:1.初始化计数变量cnt和最大计数变量maxCnt,初始值都为1。2......
  • 《摆与混》第十三章--7月15日--周六
    周六,无功无过,摒弃罪恶感;1.今天做了什么:今天9点起。洗漱后,自己准备早餐,上午小小的学了会儿,下午小小摆烂时间,5点出发健身锻炼(周末依旧坚持),之后继续看找到的小说,然后经典PTA,周末起飞呀!!!!2.解决了什么问题:Java课程推进,PTA继续冲击。3.明天干什么:预计继续学习Java,PTA同步跟进,燃起来呀,......
  • 7.15
    #include<iostream>#include<math.h>usingnamespacestd;intmain(){inta=0;cin>>a;cout<<"2^"<<a<<"="<<pow(2.0,a)<<endl;return0;}#include<iostream>using......
  • 7.15总结
    因为昨天了解到,如果自己来的比较晚,就不用对等着别人了,因为我们大概十来个人然后就只有两两车,需要排队等待,所以今天干脆晚点去,哈哈哈。差不多完了40来分钟才到,来了刚好轮到我了。等着练完车回家,今天吃早饭了,不饿了。回来稍微带了一下就中午了,中午做了饭吃了点饭睡了个午觉,醒了写了......