chore: preserve current FreeRTOS and C card updates
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user