[dpdk-dev] [PATCH v3 2/3] eal: add synchronous multi-process communication

Ananyev, Konstantin konstantin.ananyev at intel.com
Thu Jan 25 13:22:32 CET 2018


> We need the synchronous way for multi-process communication,
> i.e., blockingly waiting for reply message when we send a request
> to the peer process.
> 
> We add two APIs rte_eal_mp_request() and rte_eal_mp_reply() for
> such use case. By invoking rte_eal_mp_request(), a request message
> is sent out, and then it waits there for a reply message. The caller
> can specify the timeout. And the response messages will be collected
> and returned so that the caller can decide how to translate them.
> 
> The API rte_eal_mp_reply() is always called by an mp action handler.
> Here we add another parameter for rte_eal_mp_t so that the action
> handler knows which peer address to reply.
> 
>        sender-process                receiver-process
>    ----------------------            ----------------
> 
>     thread-n
>      |_rte_eal_mp_request() ----------> mp-thread
>         |_timedwait()                    |_process_msg()
>                                            |_action()
>                                                |_rte_eal_mp_reply()
> 	        mp_thread  <---------------------|
>                   |_process_msg()
>                      |_signal(send_thread)
>     thread-m <----------|
>      |_collect-reply
> 
>  * A secondary process is only allowed to talk to the primary process.
>  * If there are multiple secondary processes for the primary proces,
>    it will send request to peer1, collect response from peer1; then
>    send request to peer2, collect reponse from peer2, and so on.
>  * When thread-n is sending request, thread-m of that process can send
>    request at the same time.
>  * For pair <action_name, peer>, we guarantee that only one such request
>    is on the fly.
> 
> Suggested-by: Anatoly Burakov <anatoly.burakov at intel.com>
> Suggested-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> Signed-off-by: Jianfeng Tan <jianfeng.tan at intel.com>
> ---

Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>


More information about the dev mailing list