chore: preserve current FreeRTOS and C card updates

This commit is contained in:
user
2026-07-21 19:14:19 +02:00
parent 4785d506fc
commit 10a8be72e3
37 changed files with 2857 additions and 1571 deletions
+18 -13
View File
@@ -8,41 +8,46 @@ skinparam defaultFontSize 10
skinparam classBorderColor #2c7794
skinparam classBackgroundColor #edf6fa
skinparam ArrowColor #8095a1
title A2 STRUCTURE — in-band metadata and address order
title A2 STRUCTURE — RV32 header, split and two-sided coalescing
class "01 Block header" as HEADER {
next : BlockLink_t*
size : size_t
raw sizeof = 8 bytes on RV32
aligned xHeapStructSize = 16
}
class "Allocated block" as ALLOC {
02 header + 13 byte request
aligned total = 32 bytes
02 A: header + 24 byte request
aligned total = 48 bytes
payload begins after header
}
class "03 Free remainder" as REM {
own header
size = 224 bytes
free = 4032 bytes after A
}
HEADER *-- ALLOC : precedes payload
ALLOC -down-> REM : split preserves 256
ALLOC -down-> REM : first-fit + split
class "04 Address-ordered free list" as LIST {
previous < inserted < current
A < B < C+tail
}
class "05 Right neighbour" as RIGHT {
block + block.size == current
class "05 Previous / left neighbour" as LEFT {
previous + previous.size == inserted
merge previous first
}
class "06 Left neighbour" as LEFT {
previous + previous.size == block
class "06 Next / right neighbour" as RIGHT {
merged + merged.size == current
merge next second
}
REM -down-> LIST : insert by address
LIST -down-> RIGHT : join first
RIGHT -down-> LEFT : then join left
LIST -down-> LEFT : heap_4 tests first
LEFT -down-> RIGHT : then tests next
note right of LIST
Ordering makes both physical
neighbours locally visible.
Address order exposes both physical
neighbours without scanning the arena.
end note
@enduml