Linux内核模块中的线程本地数据

发布于 2024-12-04 14:19:55 字数 121 浏览 1 评论 0原文

是否可以在 Linux 内核模块中创建线程本地数据?

我需要为调用我的模块的每个进程/线程存储一些数据。 有没有一种使用线程本地数据的简单方法,或者我必须求助于 编写一个使用当前进程的 pid 作为键的哈希映射?

Is it possible to create thread local data in a linux kernel module?

I need to store some data for each process/thread calling my module.
Is there an easy way of using thread local data, or do I have to resort to
writing a hash map which uses the pid of the current process as a key?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

辞旧 2024-12-11 14:19:55

假设内核模块的接口是字符设备驱动程序,那么文件结构中就有一个 private_data 字段(类似于用户空间文件描述符)。

只需在打开文件操作时分配并指定一个指向您选择的结构的指针即可。

它不完全是线程或进程本地的,但在大多数情况下,一个文件描述符到进程的映射是正确的,并且它可能对您来说足够好了。

Assuming the interface to you kernel module is a character device driver, then you have a private_data field in the file struct (which is analogous to user space file descriptor) exactly for that.

Just allocate and assign a pointer to your structure of choice at the open file operation to it.

It's not exactly thread or process local, but in most cases a mapping of one file descriptor to your process is true and it might be good enough for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文