Go to file
Jianfeng Tan bacaa27540 eal: add channel for multi-process communication
Previouly, there are three channels for multi-process
(i.e., primary/secondary) communication.
  1. Config-file based channel, in which, the primary process writes
     info into a pre-defined config file, and the secondary process
     reads the info out.
  2. vfio submodule has its own channel based on unix socket for the
     secondary process to get container fd and group fd from the
     primary process.
  3. pdump submodule also has its own channel based on unix socket for
     packet dump.

It'd be good to have a generic communication channel for multi-process
communication to accommodate the requirements including:
  a. Secondary wants to send info to primary, for example, secondary
     would like to send request (about some specific vdev to primary).
  b. Sending info at any time, instead of just initialization time.
  c. Share FDs with the other side, for vdev like vhost, related FDs
     (memory region, kick) should be shared.
  d. A send message request needs the other side to response immediately.

This patch proposes to create a communication channel, based on datagram
unix socket, for above requirements. Each process will block on a unix
socket waiting for messages from the peers.

Three new APIs are added:

  1. rte_eal_mp_action_register() is used to register an action,
     indexed by a string, when a component at receiver side would like
     to response the messages from the peer processe.
  2. rte_eal_mp_action_unregister() is used to unregister the action
     if the calling component does not want to response the messages.
  3. rte_eal_mp_sendmsg() is used to send a message, and returns
     immediately. If there are n secondary processes, the primary
     process will send n messages.

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:09:42 +01:00
app app/crypto-perf: fix out-of-bounds array access 2018-01-29 20:22:33 +01:00
buildtools buildtools: add script to check experimental API exports 2018-01-29 22:44:00 +01:00
config net/qede: remove debug config option 2018-01-29 10:48:16 +01:00
devtools bb/turbo_sw: add software turbo driver 2018-01-19 01:44:25 +01:00
doc eal: add channel for multi-process communication 2018-01-30 15:09:42 +01:00
drivers crypto/dpaa2_sec: fix build with GCC < 7 2018-01-30 14:56:02 +01:00
examples examples/flow_filtering: fix port id size 2018-01-29 10:04:28 +01:00
lib eal: add channel for multi-process communication 2018-01-30 15:09:42 +01:00
license license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
mk mk: add experimental tag check 2018-01-29 23:35:29 +01:00
pkg version: 17.11.0 2017-11-15 19:00:28 +01:00
test test/crypto: improve NULL authentication validation 2018-01-29 20:22:33 +01:00
usertools tools: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore devtools: add tags and cscope index generation 2017-04-30 12:57:04 +02:00
GNUmakefile license: use SPDX tag in root makefile 2018-01-04 22:41:38 +01:00
MAINTAINERS maintainers: update for cryptodev 2018-01-30 00:20:31 +01:00
Makefile license: use SPDX tag in root makefile 2018-01-04 22:41:38 +01:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD-3-Clause license for the core libraries
and drivers. The kernel components are GPL-2.0 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org