]>
Commit | Line | Data |
---|---|---|
52ad194e | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
663996b3 MS |
2 | #pragma once |
3 | ||
6e866b33 | 4 | #include <stdbool.h> |
5eef597e | 5 | #include <stddef.h> |
663996b3 | 6 | |
5eef597e MP |
7 | struct pool; |
8 | ||
9 | struct mempool { | |
10 | struct pool *first_pool; | |
11 | void *freelist; | |
12 | size_t tile_size; | |
13 | unsigned at_least; | |
60f067b4 | 14 | }; |
663996b3 | 15 | |
5eef597e | 16 | void* mempool_alloc_tile(struct mempool *mp); |
f47781d8 | 17 | void* mempool_alloc0_tile(struct mempool *mp); |
5eef597e MP |
18 | void mempool_free_tile(struct mempool *mp, void *p); |
19 | ||
20 | #define DEFINE_MEMPOOL(pool_name, tile_type, alloc_at_least) \ | |
aa27b158 | 21 | static struct mempool pool_name = { \ |
5eef597e MP |
22 | .tile_size = sizeof(tile_type), \ |
23 | .at_least = alloc_at_least, \ | |
24 | } | |
60f067b4 | 25 | |
6e866b33 MB |
26 | extern const bool mempool_use_allowed; |
27 | bool mempool_enabled(void); | |
28 | ||
b012e921 | 29 | #if VALGRIND |
5eef597e MP |
30 | void mempool_drop(struct mempool *mp); |
31 | #endif |