Extending l4sys by reading/writing register values of a preempted thread
Denis Huber
huber.denis at mytum.de
Mon Mar 13 12:36:32 CET 2017
Dear L4 hackers community,
I want to implement a new syscall for getting/setting stored register
values of a specific thread (identified by its cap).
Preliminary note: I'm using the ARM architecture.
Before implementing the syscall, I need to better understand the
kernel-part of Fiasco.OC. Can you help me answer the following questions
and point me to the source code regarding each question:
* Where (in the source code) are threads preempted and their register
state stored?
* Where is the register state of a thread loaded to the CPU and the
thread started (e.g. after a preempt)?
* Where is the register state stored of each thread?
* How can I introspect the stored thread register of a thread in the
kernel debugger JDB?
** My thoughts: Is it K<kobj_ptr> with kobj_ptr of the thread and the 3
lines beginning with PC=...?
e.g.
"
PC=010579cc USP=200ffdb0 smlatbeq r9, r0, r2, r5
[0] 00000003 000010c0 00218003 00000000 tsteq000r5, ip, rrx
[8] 200ffdb0 200ffe40 01086ef0 200ffe98 [c] 200ffef8 010579cc fffffff8
20000010
"
I also have another, short, off-topic question:
* How can I introspect the capability space of a task inside the kernel
debugger?
Kind regards,
Denis
More information about the l4-hackers
mailing list