Hello Genode community, in my checkpoint component I intercepted the Cpu session of a child, through which I get all Thread_capabilities created for and by the child. To store the state of a component I need to store the registers of the threads used by the child.
I tried reading the registers through the "Thread_state Cpu_thread::state()" method, but it did not contain any information about (just zeros). I'm using Genode 16.05, kernel Fiasco.OC (pbax9 build). By inspecting the kernel API of foc, I found out that the function l4_thread_ex_regs_ret can read the sp and ip register. By changing the state method in platform_thread.cc (in base-foc) I could get the registers: Thread_state Platform_thread::state() { Thread_state s; if (_pager_obj) s = _pager_obj->state; _pager_obj->state.ip = ~0UL; _pager_obj->state.sp = ~0UL; l4_umword_t flags = 0; l4_thread_ex_regs_ret(_thread.local.dst(), &_pager_obj->state.ip, &_pager_obj->state.sp, &flags); s.sp = _pager_obj->state.sp; s.ip = _pager_obj->state.ip; s.kcap = _gate.remote; s.id = _gate.local.local_name(); s.utcb = _utcb; return s; } But other registers like r0 - r12 are missing. Is there a simple way in Genode to get them? Can I utilize the utcb memory location to find the missing registers? Kind regards Denis ------------------------------------------------------------------------------ _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main