Sat, 25 Jan 2025 13:44:24 +0100
add marker to every incomplete page
relates to #451
1143
0559812df10c
assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents:
1142
diff
changeset
|
1 | # Allocator |
1141 | 2 | |
1146
151c057faf7c
add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
3 | <warning> |
151c057faf7c
add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
4 | Outdated - Rewrite! |
151c057faf7c
add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
5 | </warning> |
151c057faf7c
add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
6 | |
1141 | 7 | The UCX allocator provides an interface for implementing an own memory allocation mechanism. |
8 | Various function in UCX provide an additional alternative signature that takes an allocator as | |
9 | argument. A default allocator implementation using the stdlib memory management functions is | |
10 | available via the global symbol `cxDefaultAllocator`. | |
11 | ||
12 | If you want to define your own allocator, you need to initialize the `CxAllocator` structure | |
13 | with a pointer to an allocator class (containing function pointers for the memory management | |
14 | functions) and an optional pointer to an arbitrary memory region that can be used to store | |
15 | state information for the allocator. An example is shown below: | |
16 | ||
17 | ```c | |
18 | struct my_allocator_state { | |
19 | size_t total; | |
20 | size_t avail; | |
21 | char mem[]; | |
22 | }; | |
23 | ||
24 | static cx_allocator_class my_allocator_class = { | |
25 | my_malloc_impl, | |
26 | my_realloc_impl, // all these functions are somewhere defined | |
27 | my_calloc_impl, | |
28 | my_free_impl | |
29 | }; | |
30 | ||
31 | CxAllocator create_my_allocator(size_t n) { | |
32 | CxAllocator alloc; | |
33 | alloc.cl = &my_allocator_class; | |
34 | alloc.data = calloc(1, sizeof(struct my_allocator_state) + n); | |
35 | return alloc; | |
36 | } | |
37 | ``` | |
38 | ||
1142
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
39 | ## Undocumented Symbols (TODO) |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
40 | |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
41 | ### cxCalloc |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
42 | ### cx_default_allocator |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
43 | ### cxDefaultAllocator |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
44 | ### cxFree |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
45 | ### cxMalloc |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
46 | ### cxRealloc |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
47 | ### cxReallocArray |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
48 | ### cx_reallocate_ |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
49 | ### cxReallocate_ |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
50 | ### cx_reallocatearray_ |
9437530176bc
add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents:
1141
diff
changeset
|
51 | ### cxReallocateArray_ |