Gernot Heiser wrote:
You certainly should not use IPC just for synchronisation, but if you have a
two-way control flow then it becomes a question of one IPC vs two Signals.
Thanks a lot, that answers my question.
I think my ideal goal would be something like a IPC-based API where one can
pass in a (limited) number of scatter-gather vectors, plus some metadata
(offloading parameters, priority, etc.), and could benefit from the fastpath.
This would enable a high-performance stack that could take advantage of things
like zero-copy buffering where applicable.
More generally, I also wonder how IPC fits in with bidirectional devices if we
follow the strict priority-based call restrictions (recommended in seL4;
required in sel4cp). If the device can both send and receive data, then it
seems it has to be both a high-priority PD (to be called) and a low-priority PD
(to call in to the stack), assuming that we are avoiding the use of
blocking-style turnaround API's (such as read, recv, etc. - I feel those are
best left at the application layers.)
You identify some of the relevant issues ;-)
We have been looking at some of this in detail for our high-performance driver
framework (seehttps://trustworthy.systems/projects/TS/drivers/, although that
page is presently devoid of technical detail). We are preparing a release which
is scheduled to happen at the time of the seL4 Summit in 5 weeks’ time. There
will be an extensive report describing design and implementation.
While the basic framework is in place and performs well (it outperforms Linux
without even trying too hard…) there are a number of questions that still need
further research, and are unlikely to be resolved by the time of the initial
release. One of them is whether drivers should be active (synchronising with
notifications only) or passive PDs (using PPCs). There are a bunch of tradeoffs
to consider, and we need a fair amount of experimental work to settle it. The
good news is that the effect the choice has on driver as well as client
implementation is minimal (a few lines changed, possibly zero on the client
side).
That's really great, that is my area of interest as well. Is that the
project at https://github.com/lucypa/sDDF ? I would appreciate being
able to follow along at home. I'm not sure how much I can contribute as
I am still pretty new to seL4, but if there's anything as far as
benchmarking or testing out of the interfaces (including porting
apps/drivers) I'd be glad to help out.
Thanks,
-Eric
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]