【发布时间】:2011-09-13 13:03:48
【问题描述】:
是否可以在 linux 内核模块中创建线程本地数据?
我需要为调用我的模块的每个进程/线程存储一些数据。 有没有使用线程本地数据的简单方法,还是我必须求助于 写一个以当前进程的pid为key的hash map?
【问题讨论】:
-
我很确定你应该以某种方式将它与任务结构联系起来......
标签: c module linux-kernel thread-local
是否可以在 linux 内核模块中创建线程本地数据?
我需要为调用我的模块的每个进程/线程存储一些数据。 有没有使用线程本地数据的简单方法,还是我必须求助于 写一个以当前进程的pid为key的hash map?
【问题讨论】:
标签: c module linux-kernel thread-local
假设你的内核模块的接口是一个字符设备驱动程序,那么你在文件结构中就有一个 private_data 字段(类似于用户空间文件描述符)。
只需在打开文件操作时分配并分配一个指向您选择的结构的指针。
这并不完全是线程或进程本地的,但在大多数情况下,一个文件描述符到您的进程的映射是正确的,它可能对您来说已经足够了。
【讨论】: