Open hlef opened 1 month ago
Note on how to implement this for the network_socket_accept_tcp
case: we likely want to keep a futex that counts how many connections are ready to be accepted. We can maintain that through the on_tcp_connect
callback (linked into FreeRTOS+TCP through FREERTOS_SO_TCP_CONN_HANDLER
).
The multiwait API allows a waiter to wait on multiple events.
It would be very useful if we could make the network API compatible with this API so that a thread can wait on several socket receives, accepts, etc. Callers currently need to create multiple threads to do this. This would be the equivalent of poll or select.
To make the network stack API multiwaiter-compatible, we need to expose a futex.
A few locations where adding this futex would make sense (to be edited when new ideas come):
network_socket_receive
,network_socket_receive_preallocated
,network_socket_receive_from
, and the TLS equivalentstls_connection_receive_preallocated
,tls_connection_receive
network_socket_send
,network_socket_send_to
, and the TLS equivalenttls_connection_send
network_socket_connect_tcp
network_socket_accept_tcp
in the new server API (https://github.com/CHERIoT-Platform/network-stack/pull/39)