金牌会员
 
- 积分
- 2029
- 金钱
- 2029
- 注册时间
- 2017-12-11
- 在线时间
- 453 小时
|
1金钱
如题:这是原子教程中定时器使用章节中的部分代码(P1229)。
- void timer_function(unsigned long arg)
- {
- struct timer_dev *dev = (struct timer_dev *)arg;
- static int sta = 1;
- int timerperiod;
- unsigned long flags;
- sta = !sta;
- gpio_set_value(dev->led_gpio, sta);
- /* 重启定时器 */
- spin_lock_irqsave(&dev->lock, flags);
- timerperiod = dev->timerperiod;
- spin_unlock_irqsave(&dev->lock, flags);
- mod_timer(&dev->timer, jiffies + msecs_to_jiffies(dev->timerperiod));
- }
复制代码 我的理解:
我认为这里似乎没必要保护,原因是timerperiod是int类型,dev->timerperiod只需要一条指令就可完成,属于原子操作,因此可以不用保护。
不知道我的理解是否正确,恳请各位指教!
额,大家觉得这里有必要使用自旋锁来保护嘛?为什么?
|
|