相关文章  
  • Linux程序开发:QT的内部进程通信(1)
  • Linux系统工作目录、用户主目录与路径
  • 浅析Apache服务器中SSI和CGI设定方法
  • 一个基于浏览器的Linux系统管理工具
  • Linux操作系统下应急响应流程与步骤
  • 100F透明模式下VLAN透传成功配置
  • 揭开Linux操作系统的Swap交换区之谜
  • Linux操作系统的声音设备编程实例(2)
  • Linux内核驱动程序初始化顺序的调整
  • Linux操作系统的声音设备编程实例(1)
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    Linux系统内核定时器机制详解(下)(4)5

    tv1,从tv3中补充tv2、…、从tv5中补充tv4。显然如果tvi.index=0(2≤i≤5),则对于tvi执行cascade_timers()函数后,tvi.index肯定为1。反过来讲,如果对tvi执行过cascade_timers()函数后tvi.index不等于1,那么可以肯定在未对tvi执行cascade_timers()函数之前,tvi.index值肯定不为0,因此这时tvi不需要从tv(i+1)中补充定时器,这时就可以终止do{}while循环。

    (2)接下来,就要执行定时器向量tv1.vec[tv1.index]中的所有到期定时器。因此这里用一个goto repeat循环从头到尾依次扫描整个定时器对列。由于在执行定时器的关联函数时并不需要关CPU中断,所以在用detach_timer()函数将当前定时器从对列中摘除后,就可以调用spin_unlock_irq()函数进行解锁和开中断,然后在执行完当前定时器的关联函数后重新用spin_lock_irq()函数加锁和关中断。

    页码:[1] [2] [3] [4] [5] [6]5页、共6页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved