783b6e5497
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@intel.com> Suggested-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com> Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> |
||
---|---|---|
.. | ||
deprecation.rst | ||
index.rst | ||
known_issues.rst | ||
rel_description.rst | ||
release_1_8.rst | ||
release_2_0.rst | ||
release_2_1.rst | ||
release_2_2.rst | ||
release_16_04.rst | ||
release_16_07.rst | ||
release_16_11.rst | ||
release_17_02.rst | ||
release_17_05.rst | ||
release_17_08.rst | ||
release_17_11.rst | ||
release_18_02.rst |