linux tasklets - 执行顺序

时间:2013-11-18 14:36:45

标签: linux linux-kernel tasklet

在我的大学,我正在开发一个涉及内核编程的项目。其中一部分是可加载内核模块,它为某些给定的中断注册中断处理程序。

现在我有中断处理程序和tasklet使用的共享数据结构,我想知道我是否可以确定tasklet的执行顺序与它们的调度顺序相同还是未定义?

例如,我的中断处理程序在时间t1和时间t2被调用,每次调用都执行tasklet_schedule(&customTasklet);。现在,我可以确定首先执行在t1安排的tasklet吗?

1 个答案:

答案 0 :(得分:2)

预定tasklet存储在列表中;系统以 FIFO 顺序读取此列表,因此:t1之前执行是t2

这里some code了解机制。

修改

正如 CL 提醒的那样,每个CPU都有一个tasklet列表;因此,当您编写一个tasklet时,您将在活动CPU上进行调度。因此,tasklet在同一个CPU上被序列化。如果您在CPU2上安排t1 un CPU1和t2,可能会在t2之前执行t1