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 --- 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 | 46 +++ doc/guides/rel_notes/release_23_03.rst | 5 + lib/eal/common/eal_common_log.c | 1 + lib/eal/include/rte_log.h | 1 + lib/memarea/memarea_private.h | 56 ++++ lib/memarea/meson.build | 10 + lib/memarea/rte_memarea.c | 420 +++++++++++++++++++++++++ lib/memarea/rte_memarea.h | 189 +++++++++++ lib/memarea/version.map | 15 + lib/meson.build | 1 + 16 files changed, 1053 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.33.0