numam-dpdk/lib/librte_eal/common
Olivier Matz 4958ca3a44 mbuf: support dynamic fields and flags
Many features require to store data inside the mbuf. As the room in mbuf
structure is limited, it is not possible to have a field for each
feature. Also, changing fields in the mbuf structure can break the API
or ABI.

This commit addresses these issues, by enabling the dynamic registration
of fields or flags:

- a dynamic field is a named area in the rte_mbuf structure, with a
  given size (>= 1 byte) and alignment constraint.
- a dynamic flag is a named bit in the rte_mbuf structure.

The typical use case is a PMD that registers space for an offload
feature, when the application requests to enable this feature.  As
the space in mbuf is limited, the space should only be reserved if it
is going to be used (i.e when the application explicitly asks for it).

The registration can be done at any moment, but it is not possible
to unregister fields or flags.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2019-10-26 19:08:50 +02:00
..
arch eal/ppc: add SPDX license tag 2019-10-17 06:59:15 +02:00
include mbuf: support dynamic fields and flags 2019-10-26 19:08:50 +02:00
eal_common_bus.c eal: replace license text with SPDX tag 2019-07-29 22:55:14 +02:00
eal_common_class.c remove experimental tags from all symbol definitions 2019-06-29 19:04:43 +02:00
eal_common_cpuflags.c eal: fix build on FreeBSD 2018-04-27 11:13:59 +02:00
eal_common_dev.c eal: fix positive error codes from probe/remove 2019-06-29 21:28:38 +02:00
eal_common_devargs.c devargs: promote experimental API as stable 2019-04-17 18:30:04 +02:00
eal_common_errno.c build/freebsd: rename macro BSDPAPP to FREEBSD 2019-03-12 23:01:14 +01:00
eal_common_fbarray.c fbarray: fix destruction 2019-07-10 23:27:46 +02:00
eal_common_hexdump.c eal: align hexdump output 2019-04-03 18:34:59 +02:00
eal_common_hypervisor.c align SPDX Mellanox copyrights 2018-04-11 01:47:47 +02:00
eal_common_launch.c lib: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
eal_common_lcore.c eal: remove dead code on NUMA node detection 2019-10-24 14:15:28 +02:00
eal_common_log.c remove experimental tags from all symbol definitions 2019-06-29 19:04:43 +02:00
eal_common_mcfg.c timer: fix resource leak in finalize 2019-07-06 10:32:40 +02:00
eal_common_memalloc.c remove useless include of EAL memory config header 2019-10-09 10:22:24 +02:00
eal_common_memory.c mem: make base address hint OS specific 2019-10-26 18:03:24 +02:00
eal_common_memzone.c remove useless include of EAL memory config header 2019-10-09 10:22:24 +02:00
eal_common_options.c eal/freebsd: support option --base-virtaddr 2019-10-25 11:17:29 +02:00
eal_common_proc.c remove experimental tags from all symbol definitions 2019-06-29 19:04:43 +02:00
eal_common_string_fns.c eal: add strscpy function 2018-09-19 11:38:19 +02:00
eal_common_tailqs.c eal: hide shared memory config 2019-07-06 10:32:34 +02:00
eal_common_thread.c eal: hide internal function 2019-08-05 11:47:22 +02:00
eal_common_timer.c eal: calibrate TSC only in primary process 2019-10-18 13:23:10 +02:00
eal_common_uuid.c eal: add uuid API 2018-07-13 23:42:08 +02:00
eal_filesystem.h fix off-by-one errors in snprintf 2019-05-29 13:02:53 +02:00
eal_hugepages.h mem: share hugepage info primary and secondary 2018-04-11 21:45:55 +02:00
eal_internal_cfg.h eal: increase maximum different hugepage sizes on Arm 2019-08-08 17:25:14 +02:00
eal_memalloc.h remove useless include of EAL memory config header 2019-10-09 10:22:24 +02:00
eal_memcfg.h eal: calibrate TSC only in primary process 2019-10-18 13:23:10 +02:00
eal_options.h eal: revert parsing option --telemetry 2019-07-29 22:24:59 +02:00
eal_private.h mem: make base address hint OS specific 2019-10-26 18:03:24 +02:00
eal_thread.h eal: hide internal function 2019-08-05 11:47:22 +02:00
hotplug_mp.c eal: hide internal hotplug function 2019-06-29 19:04:07 +02:00
hotplug_mp.h eal: hide internal hotplug function 2019-06-29 19:04:07 +02:00
Makefile mcslock: add MCS queued lock implementation 2019-07-07 23:45:22 +02:00
malloc_elem.c mem: poison memory when freed 2019-03-27 10:53:41 +01:00
malloc_elem.h remove useless include of EAL memory config header 2019-10-09 10:22:24 +02:00
malloc_heap.c eal: hide shared memory config 2019-07-06 10:32:34 +02:00
malloc_heap.h malloc: separate destroying memseg list and heap data 2018-12-20 18:10:08 +01:00
malloc_mp.c eal: hide shared memory config 2019-07-06 10:32:34 +02:00
malloc_mp.h malloc: support multiprocess memory hotplug 2018-04-11 21:45:55 +02:00
meson.build mcslock: add MCS queued lock implementation 2019-07-07 23:45:22 +02:00
rte_keepalive.c keepalive: fix state alignment 2018-01-25 23:25:57 +01:00
rte_malloc.c eal: hide shared memory config 2019-07-06 10:32:34 +02:00
rte_option.c remove experimental tags from all symbol definitions 2019-06-29 19:04:43 +02:00
rte_random.c remove experimental tags from all symbol definitions 2019-06-29 19:04:43 +02:00
rte_reciprocal.c reciprocal: fix off-by-one with 32-bit divisor 2019-10-26 16:09:51 +02:00
rte_service.c service: avoid false sharing on core state 2019-10-18 06:09:24 +02:00