1*99a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 2*99a2dd95SBruce Richardson * Copyright(c) 2010-2014 Intel Corporation 3*99a2dd95SBruce Richardson */ 4*99a2dd95SBruce Richardson 5*99a2dd95SBruce Richardson #ifndef _TB_MEM_H_ 6*99a2dd95SBruce Richardson #define _TB_MEM_H_ 7*99a2dd95SBruce Richardson 8*99a2dd95SBruce Richardson /** 9*99a2dd95SBruce Richardson * @file 10*99a2dd95SBruce Richardson * 11*99a2dd95SBruce Richardson * RTE ACL temporary (build phase) memory management. 12*99a2dd95SBruce Richardson * Contains structures and functions to manage temporary (used by build only) 13*99a2dd95SBruce Richardson * memory. Memory allocated in large blocks to speed 'free' when trie is 14*99a2dd95SBruce Richardson * destructed (finish of build phase). 15*99a2dd95SBruce Richardson */ 16*99a2dd95SBruce Richardson 17*99a2dd95SBruce Richardson #include <rte_acl_osdep.h> 18*99a2dd95SBruce Richardson #include <setjmp.h> 19*99a2dd95SBruce Richardson 20*99a2dd95SBruce Richardson struct tb_mem_block { 21*99a2dd95SBruce Richardson struct tb_mem_block *next; 22*99a2dd95SBruce Richardson struct tb_mem_pool *pool; 23*99a2dd95SBruce Richardson size_t size; 24*99a2dd95SBruce Richardson uint8_t *mem; 25*99a2dd95SBruce Richardson }; 26*99a2dd95SBruce Richardson 27*99a2dd95SBruce Richardson struct tb_mem_pool { 28*99a2dd95SBruce Richardson struct tb_mem_block *block; 29*99a2dd95SBruce Richardson size_t alignment; 30*99a2dd95SBruce Richardson size_t min_alloc; 31*99a2dd95SBruce Richardson size_t alloc; 32*99a2dd95SBruce Richardson /* jump target in case of memory allocation failure. */ 33*99a2dd95SBruce Richardson sigjmp_buf fail; 34*99a2dd95SBruce Richardson }; 35*99a2dd95SBruce Richardson 36*99a2dd95SBruce Richardson void *tb_alloc(struct tb_mem_pool *pool, size_t size); 37*99a2dd95SBruce Richardson void tb_free_pool(struct tb_mem_pool *pool); 38*99a2dd95SBruce Richardson 39*99a2dd95SBruce Richardson #endif /* _TB_MEM_H_ */ 40