- 论坛徽章:
- 0
|
本帖最后由 testh 于 2013-07-29 10:13 编辑
在中断中调用了tasklet_schedule(),大部分情况下可以正常运行,但是会遇到这样一种情况:就是在中断中第n次调用了tasklet_schedule()之后去执行了对应的func,在func还未执行完之前,又产生了中断,这将会再次调用tasklet_schedule()去执行func。但是在tasklet_schedule()的代码中存在以下的代码:- 542 static inline void tasklet_schedule(struct tasklet_struct *t)
- 543 {
- 544 if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
- 545 __tasklet_schedule(t);
- 546 }
复制代码 同时看注释也提醒到,如果在一次tasklet_handle未执行完之前又再次调用了它,便只会执行一次,也就是说第n+1次将不会被执行。
目前希望每次tasklet_handle都能够被执行,对于这个问题,请教大家是怎么处理的? |
|