del_timer和del_timer_sync

8.3.3  del_timer和del_timer_sync

同add_timer函数相反,del_timer类的函数负责从系统的定时器管理队列中摘除一个定时器对象。del_timer和del_timer_sync的函数原型为:

 
 
  1. <kernel/timer.c> 
  2. int del_timer(struct timer_list *timer);  
  3. int del_timer_sync(struct timer_list *timer);  

对于del_timer函数要摘除的定时器对象timer,函数会首先判断该对象是否是一个pending的定时器,一个处于pending状态的定时器是处在处理器的定时器管理队列中正等待被调度执行的定时器对象。如果一个要被del_timer函数删除的timer对象已经被调度执行(内核源码称这种定时器状态为inactive),函数将直接返回0,否则函数将通过detach_timer将该定时器对象从队列中删除。在多处理器的SMP系统中,del_timer_sync函数要完成的任务除了同del_timer一样从定时器队列中删除一个定时器对象外,还会确保当函数返回时系统中没有任何处理器正在执行定时器对象上的定时器函数,而如果只是调用del_timer,那么当函数返回时,被删除的定时器对象的定时器函数可能正在其他处理器上运行。


转自:http://book.51cto.com/art/201202/319704.htm


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值