On 4/13/20, Demi Obenour <demioben...@gmail.com> wrote:
>
> Speaking of UX/RT: I strongly suggest avoiding PID-based APIs in favor of
> handle-based APIs, and allocating file descriptors in a way that is more
> efficient than always picking the lowest free one.  The first causes many
> race conditions, and the second causes a lot of synchronization overhead.
> io_uring is also a good API to consider.
>
A Linux-like pidfd API will be present (although it will use procfs
underneath; anonymous FDs will basically be absent from UX/RT).
io_uring will probably be mostly implemented in the root system
library, possibly with a few hooks in the root server.

On 4/13/20, Matthew Fernandez <matthew.fernan...@gmail.com> wrote:
>
> This is effectively the approach CAmkES takes. Generated, specialised RPC
> entry points that use seL4’s IPC mechanisms. With enough information
> provided at compile time, you can generate type safe and performant
> marshaling code. With some care, you can generate code the compiler can
> easily see through and optimise. For passing bulk data, you can either use
> shared memory or unmap/remap pages during RPC.
>
> When we did some optimisation work on CAmkES for a paper (~2014?) we were
> able to comfortably hit the limit of what one could have achieved with hand
> optimised IPC.
>

I'm planning to use static compile-time marshaling on top of a regular
file descriptor for UX/RT's root server API. Since the only stable ABI
will be that of the dynamically-linked root system library, the use of
static marshaling shouldn't be a serious issue for binary
compatibility. Most other subsystems using RPC will probably use
dynamic marshaling.

_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel

Reply via email to