Files

54 lines
1.2 KiB
Plaintext

@startuml
!include card-uml-style.iuml
scale 900 width
left to right direction
class "01 PeerContext [2]" as Peers <<C struct>> {
id : uint32_t
configured_priority : UBaseType_t = 2
handle : TaskHandle_t
iterations · checksum
first_tick · last_tick
entry_sp · stack range
}
class "02 HighProbeContext" as Probe <<C struct>> {
initial_priority = 0
target_priority = 3
handle : TaskHandle_t
run_tick
ran_before_caller_returned
}
class "03 VerifierContext" as Verify <<C struct>> {
configured_priority = 1
handle : TaskHandle_t
pass
}
class "04 switch trace" as SwitchTrace <<bounded record>> {
task[16]
tick[16]
count · changes
captured A · B · A
}
class "05 preemption markers" as OrderTrace <<bounded record>> {
1 = before_raise
2 = high_probe
3 = after_raise
}
Peers --> SwitchTrace : one entry per observed task change
Peers --> Probe : vTaskPrioritySet(handle, 3)
Probe --> OrderTrace : marker 2
Peers --> OrderTrace : markers 1 and 3
Verify --> Peers : checks both
Verify --> Probe : checks preemption proof
note bottom of SwitchTrace
A→B→A is a committed subsequence.
Repeated loop iterations are not logged.
end note
@enduml