The memarea library is an allocator of variable-size object. It is a collection of allocated objects that can be efficiently alloc or free all at once, the main feature are as follows: a) it facilitate alloc and free of memory with low overhead.
b) it provides refcnt feature which could be useful in some scenes. c) it supports MT-safe as long as it's specified at creation time. d) it's memory source could comes from: d.1) system API: malloc in C library. d.2) user provided address: it can be from the rte_malloc API series or extended memory as long as it is available. d.3) user provided memarea: it can be from another memarea. e) it provides backup memory mechanism, the memarea object could use another memarea object as a backup. Note: a) the memarea is oriented towards the application layer, which could provides 'region-based memory management' [1] function. b) the eal library also provide memory zone/heap management, but these are tied to huge pages management. [1] https://en.wikipedia.org/wiki/Region-based_memory_management Signed-off-by: Chengwen Feng <fengcheng...@huawei.com> Chengwen Feng (8): memarea: introduce memory area library test/memarea: support memarea test memarea: support alloc/free/update-refcnt API test/memarea: support alloc/free/update-refcnt test memarea: support dump API test/memarea: support dump test memarea: support backup memory mechanism test/memarea: support backup memory test MAINTAINERS | 6 + app/test/meson.build | 2 + app/test/test_memarea.c | 340 ++++++++++++++++++++++ doc/api/doxy-api-index.md | 3 +- doc/api/doxy-api.conf.in | 1 + doc/guides/prog_guide/index.rst | 1 + doc/guides/prog_guide/memarea_lib.rst | 57 ++++ doc/guides/rel_notes/release_22_11.rst | 6 + lib/eal/include/rte_log.h | 1 + lib/memarea/memarea_private.h | 35 +++ lib/memarea/meson.build | 16 + lib/memarea/rte_memarea.c | 385 +++++++++++++++++++++++++ lib/memarea/rte_memarea.h | 214 ++++++++++++++ lib/memarea/version.map | 16 + lib/meson.build | 1 + 15 files changed, 1083 insertions(+), 1 deletion(-) create mode 100644 app/test/test_memarea.c create mode 100644 doc/guides/prog_guide/memarea_lib.rst create mode 100644 lib/memarea/memarea_private.h create mode 100644 lib/memarea/meson.build create mode 100644 lib/memarea/rte_memarea.c create mode 100644 lib/memarea/rte_memarea.h create mode 100644 lib/memarea/version.map -- 2.17.1