关于internal_add_timer函数的一个问题

static void internal_add_timer(tvec_base_t *base, struct timer_list *timer)

{

unsigned long expires = timer->expires;

unsigned long idx = expires - base->timer_jiffies;

struct list_head *vec;

if (idx tv1.vec + i;

} else if (idx tv2.vec + i;

} else if (idx tv3.vec + i;

} else if (idx tv4.vec + i;

} else if ((signed long) idx tv1.vec + (base->timer_jiffies & TVR_MASK);

} else {

int i;

/* If the timeout is larger than 0xffffffff on 64-bit

* architectures then we use the maximum timeout:

*/

if (idx > 0xffffffffUL) {

idx = 0xffffffffUL;

expires = idx + base->timer_jiffies;

}

i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK;

vec = base->tv5.vec + i;

}

/*

* Timers are FIFO:

*/

list_add_tail(&timer->entry, vec);

}

请问上面这个函数(linux/kernel/timer.c中定义的)中的“else if ((signed long) idx tv1.vec + (base->timer_jiffies & TVR_MASK);

}” 这一段是什么意思啊?能帮翻译下注释也行啊!不过最好还是能帮小弟讲讲这一段代码是什么意思。多谢啦!

|

软件时钟( struct timer_list )以双向链表( struct list_head )的形式,按照它们的到期时间保存相应的桶( tv1~tv5 )中。tv1 中保存了相对于 timer_jiffies 下256个 tick(具体看TVN_SIZE) 时间内到期的所有软件时钟; tv2 中保存了相对于 timer_jiffies 下256*64个 tick 时间内到期的所有软件时钟; tv3 中保存了相对于 timer_jiffies 下256*64*64个 tick 时间内到期的所有软件时钟; tv4 中保存了相对于 timer_jiffies 下256*64*64*64个 tick 时间内到期的所有软件时钟; tv5 中保存了相对于 timer_jiffies 下256*64*64*64*64个 tick 时间内到期的所有软件时钟。具体的说,从静态的角度看,假设 timer_jiffies 为0,那么 tv1[0] 保存着当前到期(到期时间等于 timer_jiffies )的软件时钟(需要马上被处理), tv1[1] 保存着下一个 tick 到达时,到期的所有软件时钟, tv1[n] (0

您可能感兴趣的文章:

linux c自写时钟,关于internal_add_timer函数(linux/kernel/timer.c中定义的)的一个问题相关推荐

  1. 怎样设置一个函数C语言,C语言中怎样编写一个函数 如何在C语言中定义一个函数?...

    如何在C语言中定义一个函数?小编很想在你面前流泪最后却还是选择装作打个哈欠 为什么小编怎么定义函数都不正确呢? 总是说小编 表达语法错误在main函数中 小编们可以在头文件与main函数之间定义,并编 ...

  2. matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...

    我纠结了两个星期是否要写这一章-最后决定还是要写一章收尾,来解释其中的控件间的数据传递问题. 在前五篇中,如果有童鞋跟上了我的思路或者做完了这样一个gui,会发现还有一个一直避开的遗留问题,就是将歌曲 ...

  3. java 函数内定义函数_java可以在main中定义函数吗?

    不能-- 但是可以在函数中来直接实现一个接口,这样就可以自定义一些函数了. 像下面这样: public static void main(String[] args){ Map map = new M ...

  4. linux 往文件写4k大小,[svc]为何linux ext4文件系统目录默认大小是4k?

    linux ext4普通盘为什么目录大小是4k? Why does every directory have a size 4096 bytes (4 K)? To understand this, ...

  5. linux php不能写文件内容,php 在linux系统下写出文件问题

    最近写了一个简单的生成文件,服务器用的linux 但是在将文件写出到路径的时候就会写出一个其他的文件夹 其中一些代码如下 define("paddy",dirname(__FILE ...

  6. linux下c获系统内存的函数,linux下c编程之内存共享shemget函数的实现及案例-bmi体重身高测试2...

    唉...刚刚学了一个有名管道跟signal()函数,有要学习一个叫什么共享内存的东西,真是忒让人不省心啊! mygod,怎么这么多系统函数啊! 下面,我们就通过一个小小的案例来说明一下shem()函数 ...

  7. linux桌面环境调整时钟,小技巧:Linux个性化面版时钟显示

    默认情况下,GNOME桌面的面版的时钟小程序只有少许的可控制选项,我们只能选择12/24制式,或者选择日期/秒针的显示. 现在,这则小技巧让你完全自由的控制你的时钟显示. 首先打开终端或按Alt+F2 ...

  8. 【常见问题】error LNK2005: 函数已经在某文件中定义

    出现背景: 在尝试用cmake编译调用yolo网络的c++项目时 出现问题: main 已经在detect_cuda_compute_capabilities.obj 中定义 错误说明: 其实就是一个 ...

  9. linux脚本中如何调用函数,在Linux中如何在Perl脚本中调用函数(在shell脚本中定义)...

    我有两个脚本,即 shell_script.sh和perl_script.pl. shell_script.sh:它有函数定义,当从Perl脚本调用时,它将以批处理模式在Linux上执行某些命令. p ...

  10. Linux怎么给命令创建别名,如何在Linux上创建别名和Shell函数 | MOS86

    使用别名和Bash Shell函数创建自己的Linux命令. 驯服重复性任务,截断冗长的进程,并使用您经常使用且难以记住的选项配置标准命令. 别名和Shell脚本是Linux和类似Unix的操作系统中 ...

最新文章

  1. mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡
  2. ubuntu系统安装mysql二进制压缩包(tar.gz)以及navicat远程连接服务器(linux系统)
  3. 《神武4》手游玩家高峰论坛落幕 玩家集思广益 游戏氛围有望调整
  4. 【渝粤教育】广东开放大学 21秋期末考试 公共政策学10855K1
  5. 什么函数是回调函数?
  6. 利用Flash读取SQL Server数据库的值
  7. 物联网其实只是一个话题
  8. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...
  9. 大数据分析平台的功能板块
  10. CTRL+ALT快捷键汇总
  11. 【imx6ul】从头搭建imx6ul开发环境(uboot、内核编译及烧入、mfgtools详细使用方法)
  12. 魏尔斯特拉斯函数与分形图形的动画演示
  13. 什么是抖音小程序 小程序该怎么做
  14. 【算法设计与分析】C++回溯法求全排列
  15. CSP-S 2022 总结
  16. krpano 陀螺仪 相关问题
  17. 异常:ERR This instance has cluster support disabled
  18. IGMP Snooping协议技术总结
  19. (3)JavaScript基本概念
  20. c4d-界面介绍、1

热门文章

  1. django路由层 虚拟环境 视图层
  2. 第04章:MongoDB基本概念
  3. 使用Struts2框架开发租房系统(8)
  4. hdu3394--Railway(点的双连通分量)
  5. android测试中如何控制wifi
  6. Gridlayout
  7. UIDevice获取设备数据以及如何获取应用信息
  8. python dict hash_Python Hashmap/Dicti
  9. 拓端tecdat|R语言中编写最小工作示例(MWRE)
  10. linux opendir php,php目录遍历函数opendir用法实例