]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
b3dcf58e MS |
2 | #pragma once |
3 | ||
a5d8835c | 4 | #include <stdbool.h> |
b3dcf58e MS |
5 | #include <stddef.h> |
6 | ||
7 | struct pool; | |
8 | ||
9 | struct mempool { | |
10 | struct pool *first_pool; | |
11 | void *freelist; | |
12 | size_t tile_size; | |
b6ff400f | 13 | size_t at_least; |
b3dcf58e MS |
14 | }; |
15 | ||
16 | void* mempool_alloc_tile(struct mempool *mp); | |
52fc5ce3 | 17 | void* mempool_alloc0_tile(struct mempool *mp); |
4392b983 | 18 | void* mempool_free_tile(struct mempool *mp, void *p); |
b3dcf58e MS |
19 | |
20 | #define DEFINE_MEMPOOL(pool_name, tile_type, alloc_at_least) \ | |
dd422d1e | 21 | static struct mempool pool_name = { \ |
b3dcf58e MS |
22 | .tile_size = sizeof(tile_type), \ |
23 | .at_least = alloc_at_least, \ | |
24 | } | |
25 | ||
b01f3195 | 26 | __attribute__((weak)) bool mempool_enabled(void); |
7c48ea02 | 27 | |
a2b052b2 | 28 | void mempool_trim(struct mempool *mp); |