54 lines
1.2 KiB
Plaintext
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
|