7

我正在为 Linux 编写一个可加载的内核模块。而且我需要在 Linux 内核中为每个任务存储一些数据(这些数据将用于调度程序回调)。

我知道我可以修改struct task_struct和插入自己的字段。但由于我愿意编写一个相对干净的内核模块,我无法修改任何驻留在原始 Linux 源代码树中的代码。

struct task_struct也可以在哈希表中维护某种从我的数据到我的数据的映射。但它似乎有点太重了。

我已经阅读了Thread local data in linux kernel module 中的答案。它提到使用private_datain struct file。但它需要每个线程都打开它才能获得struct file. 并且无法使用struct task_struct. (因为我需要在调度程序回调中使用数据)

我的问题是:是否有任何简单而干净的方法可以让我在 Linux 内核中注册每个任务的数据结构而无需修改struct task_struct

非常感谢!

4

1 回答 1

3

允许您注册每个任务数据结构的唯一简单而干净的方法是修改struct task_struct.

模块是为内核的可选部分设计的;他们只能使用从基本内核显式导出的函数。如果您必须更改基本内核,则不能再使用模块。

于 2013-08-28T08:33:34.103 回答