X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Finclude%2Frte_malloc.h;h=42ca05182f8ec0d9c1a174c6c80ad3c5aae6f8a7;hb=df3ff6be2b33faea3edf3c112b9bdc5b74d6f684;hp=54a12467a40f714d9045399042e2fc08b1c80351;hpb=ba731ea1dda3f1a1b7eb4248d5988de746d3ef0a;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_malloc.h b/lib/librte_eal/common/include/rte_malloc.h index 54a12467a4..42ca05182f 100644 --- a/lib/librte_eal/common/include/rte_malloc.h +++ b/lib/librte_eal/common/include/rte_malloc.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2010-2014 Intel Corporation + * Copyright(c) 2010-2019 Intel Corporation */ #ifndef _RTE_MALLOC_H_ @@ -111,7 +111,7 @@ rte_calloc(const char *type, size_t num, size_t size, unsigned align); /** * Replacement function for realloc(), using huge-page memory. Reserved area * memory is resized, preserving contents. In NUMA systems, the new area - * resides on the same NUMA socket as the old area. + * may not reside on the same NUMA node as the old one. * * @param ptr * Pointer to already allocated memory @@ -129,7 +129,33 @@ rte_calloc(const char *type, size_t num, size_t size, unsigned align); * - Otherwise, the pointer to the reallocated memory. */ void * -rte_realloc(void *ptr, size_t size, unsigned align); +rte_realloc(void *ptr, size_t size, unsigned int align); + +/** + * Replacement function for realloc(), using huge-page memory. Reserved area + * memory is resized, preserving contents. In NUMA systems, the new area + * resides on requested NUMA socket. + * + * @param ptr + * Pointer to already allocated memory + * @param size + * Size (in bytes) of new area. If this is 0, memory is freed. + * @param align + * If 0, the return is a pointer that is suitably aligned for any kind of + * variable (in the same manner as malloc()). + * Otherwise, the return is a pointer that is a multiple of *align*. In + * this case, it must obviously be a power of two. (Minimum alignment is the + * cacheline size, i.e. 64-bytes) + * @param socket + * NUMA socket to allocate memory on. + * @return + * - NULL on error. Not enough memory, or invalid arguments (size is 0, + * align is not a power of two). + * - Otherwise, the pointer to the reallocated memory. + */ +__rte_experimental +void * +rte_realloc_socket(void *ptr, size_t size, unsigned int align, int socket); /** * This function allocates memory from the huge-page area of memory. The memory @@ -305,7 +331,8 @@ rte_malloc_get_socket_stats(int socket, * EPERM - attempted to add memory to a reserved heap * ENOSPC - no more space in internal config to store a new memory chunk */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_memory_add(const char *heap_name, void *va_addr, size_t len, rte_iova_t iova_addrs[], unsigned int n_pages, size_t page_sz); @@ -336,7 +363,8 @@ rte_malloc_heap_memory_add(const char *heap_name, void *va_addr, size_t len, * ENOENT - heap or memory chunk was not found * EBUSY - memory chunk still contains data */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_memory_remove(const char *heap_name, void *va_addr, size_t len); /** @@ -360,7 +388,8 @@ rte_malloc_heap_memory_remove(const char *heap_name, void *va_addr, size_t len); * EPERM - attempted to attach memory to a reserved heap * ENOENT - heap or memory chunk was not found */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_memory_attach(const char *heap_name, void *va_addr, size_t len); /** @@ -384,7 +413,8 @@ rte_malloc_heap_memory_attach(const char *heap_name, void *va_addr, size_t len); * EPERM - attempted to detach memory from a reserved heap * ENOENT - heap or memory chunk was not found */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_memory_detach(const char *heap_name, void *va_addr, size_t len); /** @@ -403,7 +433,8 @@ rte_malloc_heap_memory_detach(const char *heap_name, void *va_addr, size_t len); * EEXIST - heap by name of ``heap_name`` already exists * ENOSPC - no more space in internal config to store a new heap */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_create(const char *heap_name); /** @@ -426,7 +457,8 @@ rte_malloc_heap_create(const char *heap_name); * EPERM - attempting to destroy reserved heap * EBUSY - heap still contains data */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_destroy(const char *heap_name); /** @@ -440,7 +472,8 @@ rte_malloc_heap_destroy(const char *heap_name); * EINVAL - ``name`` was NULL * ENOENT - heap identified by the name ``name`` was not found */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_get_socket(const char *name); /** @@ -455,7 +488,8 @@ rte_malloc_heap_get_socket(const char *name); * 0 if socket ID refers to internal DPDK memory * -1 if socket ID is invalid */ -int __rte_experimental +__rte_experimental +int rte_malloc_heap_socket_is_external(int socket_id); /** @@ -485,7 +519,8 @@ rte_malloc_dump_stats(FILE *f, const char *type); * @param f * A pointer to a file for output */ -void __rte_experimental +__rte_experimental +void rte_malloc_dump_heaps(FILE *f); /** @@ -501,6 +536,7 @@ rte_malloc_dump_heaps(FILE *f); * - 0: Success. * - (-1): Error. */ +__rte_deprecated int rte_malloc_set_limit(const char *type, size_t max); @@ -517,13 +553,6 @@ rte_malloc_set_limit(const char *type, size_t max); rte_iova_t rte_malloc_virt2iova(const void *addr); -__rte_deprecated -static inline phys_addr_t -rte_malloc_virt2phy(const void *addr) -{ - return rte_malloc_virt2iova(addr); -} - #ifdef __cplusplus } #endif