|
18 | 18 |
|
19 | 19 | #define BLOCKING 1024
|
20 | 20 |
|
21 |
| -#define DEFINE_ALLOCATOR(name, type) \ |
22 |
| -static struct alloc_state name##_state; \ |
23 |
| -void *alloc_##name##_node(void) \ |
24 |
| -{ \ |
25 |
| - return alloc_node(&name##_state, sizeof(type)); \ |
26 |
| -} |
27 |
| - |
28 | 21 | union any_object {
|
29 | 22 | struct object object;
|
30 | 23 | struct blob blob;
|
@@ -55,10 +48,33 @@ static inline void *alloc_node(struct alloc_state *s, size_t node_size)
|
55 | 48 | return ret;
|
56 | 49 | }
|
57 | 50 |
|
58 |
| -DEFINE_ALLOCATOR(blob, struct blob) |
59 |
| -DEFINE_ALLOCATOR(tree, struct tree) |
60 |
| -DEFINE_ALLOCATOR(tag, struct tag) |
61 |
| -DEFINE_ALLOCATOR(object, union any_object) |
| 51 | +static struct alloc_state blob_state; |
| 52 | +void *alloc_blob_node(void) |
| 53 | +{ |
| 54 | + struct blob *b = alloc_node(&blob_state, sizeof(struct blob)); |
| 55 | + return b; |
| 56 | +} |
| 57 | + |
| 58 | +static struct alloc_state tree_state; |
| 59 | +void *alloc_tree_node(void) |
| 60 | +{ |
| 61 | + struct tree *t = alloc_node(&tree_state, sizeof(struct tree)); |
| 62 | + return t; |
| 63 | +} |
| 64 | + |
| 65 | +static struct alloc_state tag_state; |
| 66 | +void *alloc_tag_node(void) |
| 67 | +{ |
| 68 | + struct tag *t = alloc_node(&tag_state, sizeof(struct tag)); |
| 69 | + return t; |
| 70 | +} |
| 71 | + |
| 72 | +static struct alloc_state object_state; |
| 73 | +void *alloc_object_node(void) |
| 74 | +{ |
| 75 | + struct object *obj = alloc_node(&object_state, sizeof(union any_object)); |
| 76 | + return obj; |
| 77 | +} |
62 | 78 |
|
63 | 79 | static struct alloc_state commit_state;
|
64 | 80 |
|
|
0 commit comments