In my fs_filter component (much like the vfs server), I am trying to allow multiple clients fast, non-blocking access to multiple filesystems. To do this without several threads, my component needs to know when each filesystem server unblocks so it can send more packets. Unfortunately, the File_system::Client interface (which File_system::Connection inherits) doesn't provide a way to receive signals when the server acknowledges packets or is ready for more packets, given that it only provides a Session:Tx::Source object for accessing the packet stream. The Session::Tx::Source interface provide the methods sigh_ack_avail() and sigh_ready_to_submit(), which allow a cilent to get the signal handlers currently in use, but doesn't allow registering new signal handlers. I added a workaround that exposes the Packet_stream_tx::Client object to the client, but it would be good to have a better way to register these signal handlers. Is there currently a way to do this, or does this require a modification to the API, like what I did?
Hello Ben,
The Session::Tx::Source interface provide the methods sigh_ack_avail() and sigh_ready_to_submit(), which allow a cilent to get the signal handlers currently in use, but doesn't allow registering new signal handlers. I added a workaround that exposes the Packet_stream_tx::Client object to the client, but it would be good to have a better way to register these signal handlers. Is there currently a way to do this, or does this require a modification to the API, like what I did?
That's an interesting problem. Thank you for raising it.
I actually do not see a better solution to your's. It might be sensible to add the two signal-handler registering methods 'sigh_ready_to_submit' and 'sigh_ack_avail' to the 'File_system::Client'. Those methods would then call the respective methods on the '_tx' member.
Cheers Norman
I did as you suggested. Here's the commit: db21ae2575e3c68d4955865d3d40b999d21f2fdf (on my fork, branch fs_filter)
On Wed, Jun 29, 2016 at 12:35 PM, Norman Feske <norman.feske@...1...
wrote:
Hello Ben,
The Session::Tx::Source interface provide the methods sigh_ack_avail() and sigh_ready_to_submit(), which allow a cilent to get the signal handlers currently in use, but doesn't allow registering new signal handlers. I added a workaround that exposes the Packet_stream_tx::Client object to the client, but it would be good to have a better way to register these signal handlers. Is there currently a way to do this, or does this require a modification to the API, like what I did?
That's an interesting problem. Thank you for raising it.
I actually do not see a better solution to your's. It might be sensible to add the two signal-handler registering methods 'sigh_ready_to_submit' and 'sigh_ack_avail' to the 'File_system::Client'. Those methods would then call the respective methods on the '_tx' member.
Cheers Norman
-- Dr.-Ing. Norman Feske Genode Labs
http://www.genode-labs.com · http://genode.org
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today. http://sdm.link/attshape _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main