numam-dpdk/lib
Yongseok Koh a53aa2b9f3 mbuf: support attaching external buffer
This patch introduces a new way of attaching an external buffer to a mbuf.

Attaching an external buffer is quite similar to mbuf indirection in
replacing buffer addresses and length of a mbuf, but a few differences:
  - When an indirect mbuf is attached, refcnt of the direct mbuf would be
    2 as long as the direct mbuf itself isn't freed after the attachment.
    In such cases, the buffer area of a direct mbuf must be read-only. But
    external buffer has its own refcnt and it starts from 1. Unless
    multiple mbufs are attached to a mbuf having an external buffer, the
    external buffer is writable.
  - There's no need to allocate buffer from a mempool. Any buffer can be
    attached with appropriate free callback.
  - Smaller metadata is required to maintain shared data such as refcnt.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
2018-04-27 20:11:25 +02:00
..
librte_acl
librte_bbdev
librte_bitratestats
librte_cfgfile
librte_cmdline cmdline: standardize conversion of IP address strings 2018-04-23 21:31:40 +02:00
librte_compat
librte_cryptodev cryptodev: support session private data setting 2018-04-23 18:20:09 +01:00
librte_distributor
librte_eal vfio: add multi container support 2018-04-27 15:54:55 +01:00
librte_efd
librte_ethdev ethdev: rename folder to library name 2018-04-27 18:01:00 +01:00
librte_eventdev eventdev: fix build with icc 2018-04-19 13:42:59 +02:00
librte_flow_classify
librte_gro
librte_gso
librte_hash
librte_ip_frag
librte_jobstats
librte_kni fix ethdev port id validation 2018-04-18 00:37:05 +02:00
librte_kvargs
librte_latencystats ethdev: remove experimental flag of ports enumeration 2018-04-27 18:00:24 +01:00
librte_lpm
librte_mbuf mbuf: support attaching external buffer 2018-04-27 20:11:25 +02:00
librte_member
librte_mempool mempool: support block dequeue operation 2018-04-26 23:34:07 +02:00
librte_meter
librte_metrics
librte_net ethdev: introduce new tunnel VXLAN-GPE 2018-04-27 18:00:55 +01:00
librte_pci
librte_pdump pdump: use generic multi-process channel 2018-04-18 01:26:21 +02:00
librte_pipeline
librte_port build: remove checks for non-optional libraries 2018-04-17 16:09:43 +02:00
librte_power
librte_rawdev rawdev: add to meson build 2018-04-17 16:40:09 +02:00
librte_reorder
librte_ring ring: relax alignment constraint on ring structure 2018-04-18 00:24:22 +02:00
librte_sched
librte_security security: extend userdata for IPsec events 2018-04-23 18:20:10 +01:00
librte_table build: remove checks for non-optional libraries 2018-04-17 16:09:43 +02:00
librte_timer eal: make semantics of lcore role function more intuitive 2018-04-26 16:58:18 +02:00
librte_vhost vhost/crypto: fix checks while moving descriptors 2018-04-27 19:49:20 +02:00
Makefile ethdev: rename folder to library name 2018-04-27 18:01:00 +01:00
meson.build ethdev: rename folder to library name 2018-04-27 18:01:00 +01:00