[dpdk-dev] [PATCH v6 2/2] eal: add synchronous multi-process communication
Burakov, Anatoly
anatoly.burakov at intel.com
Fri Jan 26 11:31:40 CET 2018
On 26-Jan-18 3:41 AM, Jianfeng Tan wrote:
> 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 process,
> it will send request to peer1, collect response from peer1; then
> send request to peer2, collect response 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>
> Reviewed-by: Anatoly Burakov <anatoly.burakov at intel.com>
> Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> ---
No further comments from me :)
--
Thanks,
Anatoly
More information about the dev
mailing list