I am trying to get working getcontext/setcontext/makecontext prototype on 
seL4/Genode (I can’t use anything except seL4 in this moment due to some 
reasons).
I need both for x86_64 and aarm64 arch.
I started from x86.

So, question one. May be someone know kind of rough implementation for 
user-space context switching?
I read information that this is not implemented yet in the main genode - but 
may be some projects does this already?

Problem 2.
When I start trying to make a fast solution and try to read registers and some 
info from low level physical seL4 thread using seL4_TCB_ReadRegisters I found  
that:
In returned successfully data rip register is always 0 for current thread, tcb 
selector myself.native_thread().tcb_sel also 0, and rsp  = 0x13!
Probably I can’t read myself?

Problem 3.
I try to take address of IPC buffer bounded to utcb() field of Genode::Thread 
using code below.
It successfully compiled and linked. Anyway, in attempt to run the program I 
found the following error in log:

[init -> test-go] Error: LD: jump slot relocation failed for symbol: 
'Genode::Thread::utcb()’

While access for similar fields in the same Thread structure successfully works!
Eg Name name() const; can be printed, native_thread() also give results.

I even found in the .o file the name of field (function technically) marked as 
U , and literally the same name mangled in the sym file for ld.lib.so compiled:
000000000003a09a T _ZN6Genode6Thread4utcbEv

genode/repos/base/lib/symbols/ld:_ZN6Genode6Thread4utcbEv T
How to fix this?

        // take info about genode thread
        Thread &myself = *Thread::myself();
        log("myself ", &myself, " size ", sizeof(myself));
        addr_t const ipc_buffer = reinterpret_cast<addr_t>(myself.utcb());
        log(" name ",myself.name(), " sb ", myself.stack_base(), " svb ", 
myself.stack_area_virtual_base(), " tcb ", 
(addr_t)myself.native_thread().tcb_sel);

        seL4_IPCBuffer &ipc_buffer = *reinterpret_cast<seL4_IPCBuffer 
*>(myself.utcb());

Sincerely,
    Alexander Tormasov・


_______________________________________________
Genode users mailing list
[email protected]
https://lists.genode.org/listinfo/users

Reply via email to