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_ |