[dpdk-dev] [PATCH v10 0/9] Dynamic memzones
Sergio Gonzalez Monroy
sergio.gonzalez.monroy at intel.com
Wed Jul 15 18:32:19 CEST 2015
Current implemetation allows reserving/creating memzones but not the opposite
(unreserve/free). This affects mempools and other memzone based objects.
>From my point of view, implementing free functionality for memzones would look
like malloc over memsegs.
Thus, this approach moves malloc inside eal (which in turn removes a circular
dependency), where malloc heaps are composed of memsegs.
We keep both malloc and memzone APIs as they are, but memzones allocate its
memory by calling malloc_heap_alloc.
Some extra functionality is required in malloc to allow for boundary constrained
memory requests.
In summary, currently malloc is based on memzones, and with this approach
memzones are based on malloc.
v10:
- Convert PNG to SVG
- Fix issue with --no-huge by forcing SOCKET_ID_ANY
- Rework some parts of the code
v9:
- Fix incorrect size_t type that results in 32bits compilation error.
v8:
- Rebase against current HEAD to factor for changes made by new Tile-Gx arch
v7:
- Create a separated maintainer section for memory allocation
v6:
- Fix bad patch for rte_memzone_free
v5:
- Fix rte_memzone_free
- Improve rte_memzone_free unit test
v4:
- Rebase and fix couple of merge issues
v3:
- Create dummy librte_malloc
- Add deprecation notice
- Rework some of the code
- Doc update
- checkpatch
v2:
- New rte_memzone_free
- Support memzone len = 0
- Add all available memsegs to malloc heap at init
- Update memzone/malloc unit tests
v6 Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
Sergio Gonzalez Monroy (9):
eal: move librte_malloc to eal/common
eal: memzone allocated by malloc
app/test: update malloc/memzone unit tests
config: remove CONFIG_RTE_MALLOC_MEMZONE_SIZE
eal: remove free_memseg and references to it
eal: new rte_memzone_free
app/test: rte_memzone_free unit test
doc: announce ABI change of librte_malloc
doc: update malloc documentation
MAINTAINERS | 22 +-
app/test/test_malloc.c | 86 --
app/test/test_memzone.c | 456 ++-------
config/common_bsdapp | 8 +-
config/common_linuxapp | 8 +-
doc/guides/prog_guide/env_abstraction_layer.rst | 220 ++++-
doc/guides/prog_guide/img/malloc_heap.png | Bin 81329 -> 0 bytes
doc/guides/prog_guide/img/malloc_heap.svg | 1018 +++++++++++++++++++++
doc/guides/prog_guide/index.rst | 1 -
doc/guides/prog_guide/malloc_lib.rst | 233 -----
doc/guides/prog_guide/overview.rst | 11 +-
doc/guides/rel_notes/abi.rst | 6 +-
drivers/net/af_packet/Makefile | 1 -
drivers/net/bonding/Makefile | 1 -
drivers/net/e1000/Makefile | 2 +-
drivers/net/enic/Makefile | 2 +-
drivers/net/fm10k/Makefile | 2 +-
drivers/net/i40e/Makefile | 2 +-
drivers/net/ixgbe/Makefile | 2 +-
drivers/net/mlx4/Makefile | 1 -
drivers/net/null/Makefile | 1 -
drivers/net/pcap/Makefile | 1 -
drivers/net/virtio/Makefile | 2 +-
drivers/net/vmxnet3/Makefile | 2 +-
drivers/net/xenvirt/Makefile | 2 +-
lib/Makefile | 2 +-
lib/librte_acl/Makefile | 2 +-
lib/librte_eal/bsdapp/eal/Makefile | 4 +-
lib/librte_eal/bsdapp/eal/rte_eal_version.map | 19 +
lib/librte_eal/common/Makefile | 1 +
lib/librte_eal/common/eal_common_memzone.c | 352 +++----
lib/librte_eal/common/include/rte_eal_memconfig.h | 5 +-
lib/librte_eal/common/include/rte_malloc.h | 342 +++++++
lib/librte_eal/common/include/rte_malloc_heap.h | 3 +-
lib/librte_eal/common/include/rte_memzone.h | 11 +
lib/librte_eal/common/malloc_elem.c | 344 +++++++
lib/librte_eal/common/malloc_elem.h | 192 ++++
lib/librte_eal/common/malloc_heap.c | 227 +++++
lib/librte_eal/common/malloc_heap.h | 70 ++
lib/librte_eal/common/rte_malloc.c | 262 ++++++
lib/librte_eal/linuxapp/eal/Makefile | 4 +-
lib/librte_eal/linuxapp/eal/eal_ivshmem.c | 17 +-
lib/librte_eal/linuxapp/eal/eal_memory.c | 2 +-
lib/librte_eal/linuxapp/eal/rte_eal_version.map | 19 +
lib/librte_hash/Makefile | 2 +-
lib/librte_lpm/Makefile | 2 +-
lib/librte_malloc/Makefile | 6 +-
lib/librte_malloc/malloc_elem.c | 320 -------
lib/librte_malloc/malloc_elem.h | 190 ----
lib/librte_malloc/malloc_heap.c | 208 -----
lib/librte_malloc/malloc_heap.h | 70 --
lib/librte_malloc/rte_malloc.c | 228 +----
lib/librte_malloc/rte_malloc.h | 342 -------
lib/librte_malloc/rte_malloc_version.map | 16 -
lib/librte_mempool/Makefile | 2 -
lib/librte_port/Makefile | 1 -
lib/librte_ring/Makefile | 3 +-
lib/librte_table/Makefile | 1 -
58 files changed, 2988 insertions(+), 2371 deletions(-)
delete mode 100644 doc/guides/prog_guide/img/malloc_heap.png
create mode 100755 doc/guides/prog_guide/img/malloc_heap.svg
delete mode 100644 doc/guides/prog_guide/malloc_lib.rst
create mode 100644 lib/librte_eal/common/include/rte_malloc.h
create mode 100644 lib/librte_eal/common/malloc_elem.c
create mode 100644 lib/librte_eal/common/malloc_elem.h
create mode 100644 lib/librte_eal/common/malloc_heap.c
create mode 100644 lib/librte_eal/common/malloc_heap.h
create mode 100644 lib/librte_eal/common/rte_malloc.c
delete mode 100644 lib/librte_malloc/malloc_elem.c
delete mode 100644 lib/librte_malloc/malloc_elem.h
delete mode 100644 lib/librte_malloc/malloc_heap.c
delete mode 100644 lib/librte_malloc/malloc_heap.h
delete mode 100644 lib/librte_malloc/rte_malloc.h
--
1.9.3
More information about the dev
mailing list