是否可以在一个模块中定义单个 tasklet,并将其“导出”以供其他人使用?我想知道这在理论上是否可行,那么同步和对 tasklet 的有序访问呢?或者这样的想法是愚蠢的?
谢谢。
是否可以在一个模块中定义单个 tasklet,并将其“导出”以供其他人使用?我想知道这在理论上是否可行,那么同步和对 tasklet 的有序访问呢?或者这样的想法是愚蠢的?
谢谢。
当然。没有理由你不能这样做。我不明白为什么这样做是个好主意,但没有什么能阻止你。tasklet 框架做出了一定的保证,其中之一就是 tasklet 一次不会在多个 CPU 上运行。所以没有真正的同步问题。
但是,也没有对 tasklet 的“有序访问”,因为您可以为它排队工作。如果在 tasklet 已经运行时调用 tasklet_schedule,tasklet 将再次执行,但它的执行可能会延迟到 ksoftirqd 线程。
您可能应该阅读http://www.makelinux.net/ldd3/chp-7-sect-5.shtml上关于 tasklet 的 LDD3 部分