Я пишу программу, которая анализирует все задачи, запущенные в linux, начиная с init_task для каждой задачи, и я читаю его структуру task_struct, которая позволяет мне получить его PID, State, Oncpu ..
Однако я такженужно найти сохраненные регистры этой задачи, особенно регистры R0-R10, IP, SP, FP и ПК
Также в task_struct я нашел указатель на структуру cpu_context, которая содержит регистры R4 в ПК
Итак, проблема в том, что я не знаю, как получить регистры с R0 по R3. Я пытался вручную проанализировать стек задачи, но не нашел соответствующих значений
, поэтому вот мои вопросы:
- где в стеке (или в другом месте в памяти) сохраняются регистры задачи, которая не выполняется?
-Могу ли я доверять значениям регистров R4 дляПК найден в структуре cpu_context?
Я использую плату, содержащую процессор ARM Cortex A9 MPCore (2 ядра), связанный с главным компьютером с помощью JTAG Link
Linux Kernel 2.6.35.7+ работает на плате (конечно, это ядро было скомпилировано для архитектуры ARM)
На хост-компьютере я использую OPENOCD и GDB для отладки.
Спасибо