numam-dpdk/doc/guides/rel_notes
Jianfeng Tan 783b6e5497 eal: add synchronous multi-process communication
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>
2018-01-30 15:17:23 +01:00
..
deprecation.rst doc: announce ABI change for ring structure 2018-01-17 22:05:36 +01:00
index.rst doc: add template release notes for 18.02 2017-11-23 23:31:35 +01:00
known_issues.rst doc: add known issue about l3fwd-power 2017-05-07 22:31:29 +02:00
rel_description.rst doc: simplify release notes cover 2015-08-12 09:15:27 +02:00
release_1_8.rst doc: fix spellings 2015-12-15 13:50:42 +01:00
release_2_0.rst doc: add missing release notes for mlx4 availability in 2.0 2015-08-17 19:35:37 +02:00
release_2_1.rst fix typos 2018-01-11 18:26:46 +01:00
release_2_2.rst doc: add statistics fixes in release notes 2015-12-15 13:50:42 +01:00
release_16_04.rst doc: remove residual template from release notes 2016-04-11 23:56:34 +02:00
release_16_07.rst doc: add tested hardware and systems for 16.07 2016-07-28 18:11:56 +02:00
release_16_11.rst doc: fix release notes for 16.11 2016-11-13 15:25:12 +01:00
release_17_02.rst doc: update release notes for 17.02 2017-02-14 21:58:04 +01:00
release_17_05.rst doc: add i40e tunnel support in release notes 2018-01-29 10:04:28 +01:00
release_17_08.rst eventdev: bump library version 2017-08-08 20:01:39 +02:00
release_17_11.rst doc: add i40e queue region support to release notes 2018-01-29 10:04:28 +01:00
release_18_02.rst eal: add synchronous multi-process communication 2018-01-30 15:17:23 +01:00