Hello Alexander,

I think we have to clarify a few things.

The direct invocation of kernel syscalls is not encouraged on Genode
applications, since the whole point about Genode is to have a operating
system framework running _portable code_ across more than 7 microkernels
(seL4, Fiasco.OC, NOVA, Genode's hw-kernel and our retirees OKL4,
Pistachio and Fiasco/L4) and even Linux (base-linux). It is a
fundamental concern to be kernel-independent.

That being said, we avoid as far as possible to give Genode applications
kernel specific capabilities at hand. For Genode/seL4 we intentionally
don't give the seL4 thread capabilities to the applications. That means
you can't succeed in invoking seL4_TCB_ReadRegisters or
seL4_TCB_WriteRegisters syscalls directly. So, as pointed out above - it
is a feature, not a bug.

Instead, please consider the usage of Genode interfaces [1] and more
portable approaches [0] that work across kernels.

Best regards,

Alexander Boettcher.


[0] https://lists.genode.org/pipermail/users/2019-September/006931.html
[1] https://lists.genode.org/pipermail/users/2019-September/006930.html

On 27.09.19 12:05, Alexander Tormasov via users wrote:
> Thank you for suggestion!
> Will send them info that they need explicitly state that you can’t read local 
> (own) thread registers in docs
> 
> While I I think that this is mostly bug in Genode - it return incorrect OK 
> code (0) during such attempt while probably need to analyze response from 
> seL4 more carefully
> 
> (May be this is seL4 library bug - it is still unclear for me why I haven’t 
> the name used from seL4 documentation in the seL4 sources in Genode/contrib, 
> suspect some linker tricks)
> 
> Отправлено с iPhone
> 
> 27 сент. 2019 г., в 10:56, Adam Wiethuechter <[email protected]> 
> написал(а):
> 
>  Alex,
> 
> I would encourage passing what you found along (even the documentation 
> improvement suggestion) to Data61. They are very open to any form of feedback 
> with seL4.
> 
> On 9/26/2019 6:53 AM, Alexander Tormasov via users wrote:
> 
> 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?
> 
> Seems that I found answer in the seL4 code. They do not allow ReadReginster 
> from myself:
> 
> In file object/tcb.c
> exception_t
> decodeReadRegisters(cap_t cap, word_t length, bool_t call,
>                     word_t *buffer)
> {
> …
>    thread = TCB_PTR(cap_thread_cap_get_capTCBPtr(cap));
>     if (thread == NODE_STATE(ksCurThread)) {
>         userError("TCB ReadRegisters: Attempted to read our own registers.");
>         current_syscall_error.type = seL4_IllegalOperation;
>         return EXCEPTION_SYSCALL_ERROR;
>     }
> 
> Seems that this is my fault (while this is not anyhow specified in the docs, 
> only some innuendo about stopped thread read)
> 
> So, the  function used from library seL4_TCB_ReadRegisters incorrectly return 
> 0 - everything is ok while it is not.
> 
> Also seems that seL4_TCB_WriteRegisters do not work in such conditions as 
> well - it return without errors and not changing rip to new function 
> specified in appropriate field …
> 
> 
> 
> 
> _______________________________________________
> Genode users mailing list
> [email protected]<mailto:[email protected]>
> https://lists.genode.org/listinfo/users
> 
> 
> --
> 73's,
> Adam Wiethuechter, Junior Software Engineer
> Critical Technologies Inc. (CTI)
> Desk: (315)-793-0248 x157
> Cell: (315)-552-4298
> <[email protected]><mailto:[email protected]>
> 
> _______________________________________________
> Genode users mailing list
> [email protected]
> https://lists.genode.org/listinfo/users
> 
> 
> _______________________________________________
> Genode users mailing list
> [email protected]
> https://lists.genode.org/listinfo/users
> 

-- 
Alexander Boettcher
Genode Labs

https://www.genode-labs.com - https://www.genode.org

Genode Labs GmbH - Amtsgericht Dresden - HRB 28424 - Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

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

Reply via email to