Sun, 22 Dec 2024 22:10:04 +0100
don't trust that size_t always has word width
it should be the case on all platforms supported by UCX, but it's not strictly defined in POSIX that it must be the case
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1 | /* |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
3 | * |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
4 | * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
5 | * |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
8 | * |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
11 | * |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
15 | * |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
27 | */ |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
28 | /** |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
29 | * \file mempool.h |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
30 | * \brief Interface for memory pool implementations. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
31 | * \author Mike Becker |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
32 | * \author Olaf Wintermann |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
33 | * \copyright 2-Clause BSD License |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
34 | */ |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
35 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
36 | #ifndef UCX_MEMPOOL_H |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
37 | #define UCX_MEMPOOL_H |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
38 | |
681
502105523db7
fix common.h include problems - fixes #255
Mike Becker <universe@uap-core.de>
parents:
571
diff
changeset
|
39 | #include "common.h" |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
40 | #include "allocator.h" |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
41 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
42 | #ifdef __cplusplus |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
43 | extern "C" { |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
44 | #endif |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
45 | |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
46 | /** Internal structure for pooled memory. */ |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
47 | struct cx_mempool_memory_s; |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
48 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
49 | /** |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
50 | * The basic structure of a memory pool. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
51 | * Should be the first member of an actual memory pool implementation. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
52 | */ |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
53 | struct cx_mempool_s { |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
54 | /** The provided allocator. */ |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
759
diff
changeset
|
55 | const CxAllocator *allocator; |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
56 | |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
57 | /** |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
58 | * A destructor that shall be automatically registered for newly allocated memory. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
59 | * This destructor MUST NOT free the memory. |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
60 | */ |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
61 | cx_destructor_func auto_destr; |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
62 | |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
63 | /** Array of pooled memory. */ |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
64 | struct cx_mempool_memory_s **data; |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
65 | |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
66 | /** Number of pooled memory items. */ |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
67 | size_t size; |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
68 | |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
69 | /** Memory pool capacity. */ |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
70 | size_t capacity; |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
71 | }; |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
72 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
73 | /** |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
74 | * Common type for all memory pool implementations. |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
75 | */ |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
76 | typedef struct cx_mempool_s CxMempool; |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
77 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
78 | /** |
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
79 | * Deallocates a memory pool and frees the managed memory. |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
80 | * |
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
81 | * @param pool the memory pool to free |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
82 | */ |
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
83 | void cxMempoolFree(CxMempool *pool); |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
84 | |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
85 | /** |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
86 | * Creates an array-based memory pool with a shared destructor function. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
87 | * |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
88 | * This destructor MUST NOT free the memory. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
89 | * |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
90 | * @param capacity the initial capacity of the pool |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
91 | * @param destr optional destructor function to use for allocated memory |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
92 | * @return the created memory pool or \c NULL if allocation failed |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
93 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
94 | cx_attr_nodiscard |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
95 | cx_attr_malloc |
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
96 | cx_attr_dealloc(cxMempoolFree, 1) |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
97 | CxMempool *cxMempoolCreate(size_t capacity, cx_destructor_func destr); |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
98 | |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
99 | /** |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
100 | * Creates a basic array-based memory pool. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
101 | * |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
102 | * @param capacity the initial capacity of the pool |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
103 | * @return the created memory pool or \c NULL if allocation failed |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
104 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
105 | #define cxBasicMempoolCreate(capacity) cxMempoolCreate(capacity, NULL) |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
106 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
107 | /** |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
108 | * Sets the destructor function for a specific allocated memory object. |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
109 | * |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
110 | * If the memory is not managed by a UCX memory pool, the behavior is undefined. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
111 | * The destructor MUST NOT free the memory. |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
112 | * |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
113 | * @param memory the object allocated in the pool |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
114 | * @param fnc the destructor function |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
115 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
116 | cx_attr_nonnull |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
117 | void cxMempoolSetDestructor( |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
118 | void *memory, |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
119 | cx_destructor_func fnc |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
120 | ); |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
121 | |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
122 | /** |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
123 | * Removes the destructor function for a specific allocated memory object. |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
124 | * |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
125 | * If the memory is not managed by a UCX memory pool, the behavior is undefined. |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
126 | * The destructor MUST NOT free the memory. |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
127 | * |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
128 | * @param memory the object allocated in the pool |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
129 | */ |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
130 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
131 | void cxMempoolRemoveDestructor(void *memory); |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
132 | |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
133 | /** |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
134 | * Registers foreign memory with this pool. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
135 | * |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
136 | * The destructor, in contrast to memory allocated by the pool, MUST free the memory. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
137 | * |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
138 | * A small portion of memory will be allocated to register the information in the pool. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
139 | * If that allocation fails, this function will return non-zero. |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
140 | * |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
141 | * @param pool the pool |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
142 | * @param memory the object to register (MUST NOT be already allocated in the pool) |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
143 | * @param destr the destructor function |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
144 | * @return zero on success, non-zero on failure |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
145 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
146 | cx_attr_nonnull |
727
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
147 | int cxMempoolRegister( |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
148 | CxMempool *pool, |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
149 | void *memory, |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
150 | cx_destructor_func destr |
d92a59f5d261
improve mempool implementation
Mike Becker <universe@uap-core.de>
parents:
681
diff
changeset
|
151 | ); |
571
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
152 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
153 | #ifdef __cplusplus |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
154 | } // extern "C" |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
155 | #endif |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
156 | |
f83583a0bbac
#201 - add mempool implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
157 | #endif // UCX_MEMPOOL_H |