我正在编写一个程序,解析Linux上运行的所有任务,从init_task开始,对于每个任务,我读取它的task_struct结构,这使我能够获得它的PID,状态,Oncpu等信息。
但是我还需要找到该任务的保存寄存器,特别是寄存器R0到R10,IP,SP,FP和PC。
此外,在task_struct中,我找到了一个指向cpu_context结构的指针,其中包含寄存器R4到PC。
所以问题在于,我不知道如何获取R0到R3寄存器。我尝试手动解析任务的堆栈,但没有找到任何相关值。
因此,我的问题如下:
-不在运行的任务的堆栈(或内存中的其他位置)中保存寄存器的位置在哪里?
-我可以相信在cpu_context结构中找到的R4到PC寄存器的值吗?
我使用包含ARM Cortex A9 MPCore处理器(2个核心)的板子,并通过JTAG Link与主机PC链接。
板子上运行Linux内核2.6.35.7+(当然,该内核是针对ARM架构编译的)。
在主机PC上,我使用OPENOCD和GDB进行调试。
谢谢。
但是我还需要找到该任务的保存寄存器,特别是寄存器R0到R10,IP,SP,FP和PC。
此外,在task_struct中,我找到了一个指向cpu_context结构的指针,其中包含寄存器R4到PC。
所以问题在于,我不知道如何获取R0到R3寄存器。我尝试手动解析任务的堆栈,但没有找到任何相关值。
因此,我的问题如下:
-不在运行的任务的堆栈(或内存中的其他位置)中保存寄存器的位置在哪里?
-我可以相信在cpu_context结构中找到的R4到PC寄存器的值吗?
我使用包含ARM Cortex A9 MPCore处理器(2个核心)的板子,并通过JTAG Link与主机PC链接。
板子上运行Linux内核2.6.35.7+(当然,该内核是针对ARM架构编译的)。
在主机PC上,我使用OPENOCD和GDB进行调试。
谢谢。