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.bura...@intel.com>
Suggested-by: Konstantin Ananyev <konstantin.anan...@intel.com>
Signed-off-by: Jianfeng Tan <jianfeng....@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.bura...@intel.com>
Acked-by: Konstantin Ananyev <konstantin.anan...@intel.com>
---

No further comments from me :)

--
Thanks,
Anatoly

Reply via email to