xref: /dpdk/lib/acl/tb_mem.h (revision 7a335720575507f55b723b1e10bfea7daeba1386)
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