悟空学Linux专栏----第20篇

本文介绍了悟空在研究Linux内核高分辨率定时器的过程中,探讨了其结构和管理方式。高精度定时器结构体包括到期时间、执行函数和管理数据结构,其中管理数据结构使用了timerqueue_node而非直接的rb_node。达人解释了这种设计的原因,涉及到红黑树的时间排序准则以及到期时间可能存在的区间需求。
摘要由CSDN通过智能技术生成

  自从悟空发现高精度定时器的精度很高之后,悟空就决定开始研究高分辨率的定时器。有了低分辨率定时器的基础之后,悟空想内核表示高分辨率定时器的结构中应该至少包括三个成员。

  一个表示到期时间的成员,而且这个成员肯定不是unsigned long类型的成员,因为内核表示时间的方法主要有两种,一个jiffies,一个是ktime_t,而要实现ns级别的精度,内核必须采用ktime_t类型。

  第二个成员是高精度定时器执行的挂钩函数,这个函数主要用于执行到期之后需要执行的任务。

  第三个成员就是内核管理高精度定时器的管理数据结构,低分辨率的定时器采用了五个双向链表来管理这些定时器,而高精度定时器应该也有一种管理方式,悟空想应该是红黑树吧。

  悟空想验证一下自己的想法,于是悟空找到了内核高精度定时器的结构体:

  struct hrtimer {

  struct timerqueue_node node;

  ktime_t _softexpires;

  enum hrtimer_restart (*function)(struct hrtimer *);

  struct hrtimer_clock_base *base;

  unsigned long state;

  ......

  };

  看完这个结构体悟空感觉有点小激动,因为悟空发现他的猜想是对的,struct hrtimer中的确包含了这三个成员。但是悟空不太明白的是,为什么管理数据结构的红黑树的成员,没有采用红黑树的struct rb_node的结构体,而是采用了struct timerqueue_node成员,该结构体中包含一个expires成员,具体的结构体如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值