linux tasklets - 执行顺序

标签 linux linux-kernel tasklet

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

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

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

最佳答案

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

在这里some code了解机制。

编辑

正如 CL 所提醒的,每个 CPU 都有一个 tasklet 列表;所以当你调度一个 tasklet 时,你是在事件的 CPU 上调度它。所以 tasklet 在同一个 CPU 上被序列化。如果你安排t1联合国 CPU1 和 t2在 CPU2 上可能会发生 t2t1 之前执行.

关于linux tasklets - 执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050378/

相关文章:

java - 在 JFileChooser 中仅显示 TSTA* 文件

c++ - 测试内存分配失败的正确行为

macos - 如何在 Mac OSX 上查看加载的内核模块?

python - 如何理解appengine ndb.tasklet?

linux-kernel - 动态微线程或工作队列

python - 在 Python 和 linux 中如何获取给定的用户 ID

Linux:如何用指定字符替换部分文件名

c - 将枚举从内核模块传递到用户空间程序

c - i2c_master_recv 的值从何而来?