linux - 如何在我的 LKM 和 Linux 内核之间同步共享数据结构?

标签 linux linux-kernel

我正在 Linux 中开发 LKM(可加载内核模块)。 LKM想要的是通过TCB(即task_strct)遍历所有进程信息。

我想知道当 LKM 遍历数据结构时 TCB 数据结构是否正在更新。

也就是说,在LKM遍历TCB数据结构的过程中,数据结构可以因为进程的终止或创建而更新。 我如何才能使我的 LKM 与不断更新 SMP 或非 SMP Linux 系统中的 TCB 数据结构的 Linux 内核同步? //道姆

最佳答案

I think you can traverse the process list via below sample code

struct task_struct *task;
rcu_read_lock();                                                    
for_each_process(task) {                                             
      task_lock(task);                                             

      /* do something with your task :) */

      task_unlock(task);                                           
}                                                                    
rcu_read_unlock(); 

引用::how to iterate over PCB's to show information in a Linux Kernel Module?

关于linux - 如何在我的 LKM 和 Linux 内核之间同步共享数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34035444/

相关文章:

linux - 当前执行进程的pid

c - Linux 相当于 GetCommandLine 和 CommandLineToArgv?

linux - 对脚本文件参数中给出的目录中的所有文件运行 cat 命令,并使用作为第二个参数给出的名称输出

linux - 如何使用 linux 内核模块获取盖子状态?

linux - 在引导时加载 linux 内核模块

linux - 将 Ext4 打补丁并编译为内核模块

linux - Linux 内核中类似 mprotect() 的功能

c - 使用 mingw 在 Linux 上将 c 编译为 (windows)exe 时出错

linux - 将文件移动到同一目录中具有旧扩展名的文件

linux - 在系统调用中创建用户