| 162 | } |
| 163 | |
| 164 | void * |
| 165 | mlx5_malloc(uint32_t flags, size_t size, unsigned int align, int socket) |
| 166 | { |
| 167 | void *addr; |
| 168 | bool rte_mem; |
| 169 | |
| 170 | /* |
| 171 | * If neither system memory nor rte memory is required, allocate |
| 172 | * memory according to mlx5_sys_mem.enable. |
| 173 | */ |
| 174 | if (flags & MLX5_MEM_RTE) |
| 175 | rte_mem = true; |
| 176 | else if (flags & MLX5_MEM_SYS) |
| 177 | rte_mem = false; |
| 178 | else |
| 179 | rte_mem = mlx5_sys_mem.enable ? false : true; |
| 180 | if (rte_mem) { |
| 181 | if (flags & MLX5_MEM_ZERO) |
| 182 | addr = rte_zmalloc_socket(NULL, size, align, socket); |
| 183 | else |
| 184 | addr = rte_malloc_socket(NULL, size, align, socket); |
| 185 | mlx5_mem_update_msl(addr); |
| 186 | #ifdef RTE_LIBRTE_MLX5_DEBUG |
| 187 | if (addr) |
| 188 | __atomic_fetch_add(&mlx5_sys_mem.malloc_rte, 1, |
| 189 | __ATOMIC_RELAXED); |
| 190 | #endif |
| 191 | return addr; |
| 192 | } |
| 193 | /* The memory will be allocated from system. */ |
| 194 | if (align > MLX5_MALLOC_ALIGNMENT) |
| 195 | addr = mlx5_alloc_align(size, align, !!(flags & MLX5_MEM_ZERO)); |
| 196 | else if (flags & MLX5_MEM_ZERO) |
| 197 | addr = calloc(1, size); |
| 198 | else |
| 199 | addr = malloc(size); |
| 200 | #ifdef RTE_LIBRTE_MLX5_DEBUG |
| 201 | if (addr) |
| 202 | __atomic_fetch_add(&mlx5_sys_mem.malloc_sys, 1, |
| 203 | __ATOMIC_RELAXED); |
| 204 | #endif |
| 205 | return addr; |
| 206 | } |
| 207 | |
| 208 | void * |
| 209 | mlx5_realloc(void *addr, uint32_t flags, size_t size, unsigned int align, |
no test coverage detected