【发布时间】:2017-10-11 23:51:40
【问题描述】:
我想编写一个内核模块来检查正在运行的进程的预定指令。我已经看过Linux Kernel Process Management,它解释了如何迭代进程。
struct task_struct *task;
for_each_process(task) {
/* this pointlessly prints the name and PID of each task */
printk("%s[%d]\n", task->comm, task->pid);
}
但是,一旦我获得了task_struct,我该如何获得说明?我假设我需要先找到程序计数器,看看接下来要执行哪些指令。
我需要检查task_struct 的哪个成员才能按照说明结束?它们存储在哪种struct 类型中?
感谢您的帮助。我对内核编程没有那么丰富的经验。
【问题讨论】:
-
嗯,用户堆栈指针应该指向下一条要执行的指令被压入的堆栈位置,(或者,至少在它旁边,取决于堆栈的工作方式)。跨度>
-
@ThingyWotsit,好的,听起来不错。有没有办法沿着堆栈“走”?这些说明是否类似于我可以遵循的链接列表?
标签: c linux linux-kernel kernel-module program-counter