The memarea library is an allocator of variable-size object which based on a memory region. The main features are as follows:
- The memory region can be initialized from the following memory sources: 1. HEAP: e.g. invoke rte_malloc_socket. 2. LIBC: e.g. invoke posix_memalign. 3. Another memarea: it can be from another memarea. - It supports MT-safe as long as it's specified at creation time. 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 Chengwen Feng (6): memarea: introduce memarea library test/memarea: support memarea test memarea: support alloc and free API test/memarea: support alloc and free API test memarea: support dump API test/memarea: support dump API test --- v14: * address Stephen's comments: RTE_MEMAREA_LOG use easy impl and add __func__ print. v13: * address Morten's comments: make debug cookies optional, controlled by RTE_LIBRTE_MEMAREA_DEBUG; disabled by default. * reduce management data overhead. v12: * remove rte_memarea_refcnt_update() API which address Dongdong's comments. * refine the variable naming. * fix some bugs. v11: * rebase 23.03 * remove "app/test: add memarea to malloc-perf-autotest" because the two algorithm are not comparable which also address previous comments. v10: * support windows platform. * add rte_memarea.libc perftest to malloc-perf-autotest. v9: * address Dmitry's comments. * drop features of SOURCE_USER and backup memarea mechanism. * rename rte_memarea_update_refcnt to rte_memarea_refcnt_update to keep with rte_mbuf_refcnt_update name style. * fix memarea perftest compile failed at windows platform. * fix spell warning. v8: * address Mattias's comments (rename ALG_DEFAULT with ALG_NEXTFIT). * small feature patches are combined. * enhanced backup memory mechanism. * add memarea to malloc-perf-autotest. * other tiny naming optimize. v7: * repost patches as there are spread over different series in patchwork. v6: * address Mattias's comments. v5: * fix 09/10 patch spell warning. v4: * repost patches as there are spread over different series in patchwork. v3: * add memory source of RTE memory. * add algorithm field to facilitate the introduction of new algorithms. * fix memarea log don't output problem. v2: * fix compile issues reported by dpdk-test-report. * address Dimitry and Jerin's comments. * add no MT-safe test. MAINTAINERS | 6 + app/test/meson.build | 2 + app/test/test_memarea.c | 297 ++++++++++++++++ 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 | 55 +++ doc/guides/rel_notes/release_23_03.rst | 6 + lib/memarea/memarea_private.h | 58 ++++ lib/memarea/meson.build | 10 + lib/memarea/rte_memarea.c | 448 +++++++++++++++++++++++++ lib/memarea/rte_memarea.h | 185 ++++++++++ lib/memarea/version.map | 15 + lib/meson.build | 1 + 14 files changed, 1087 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