我有指向Linux内核中每个任务的任务结构的指针,现在我如何为每个任务派生CPU寄存器值(eax或rax),假设任务现在没有运行?
答案 0 :(得分:2)
task_pt_regs(task)提供指向已保存寄存器块的指针。它们始终位于任务内核堆栈区域的顶部。在执行任务时,内核堆栈区域基本上是“空的”。当执行系统调用(或由于其他原因输入内核)时,执行“系统条目”代码(对于x86,这是在arch / x86 / kernel / entry_ {32,64} .S)。构造pt_regs结构以匹配在条目代码中完成的寄存器保存的顺序。
答案 1 :(得分:0)
在task_struct结构中有一个名为thread_struct的字段。您可以使用它来获取CPU特定状态。
/* CPU-specific state of this task */
struct thread_struct thread;