Files
lab-rv32i-freertos-c-scheduler/doc/assets/a5-flow-b.svg
T

106 lines
14 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="328.7879px" preserveAspectRatio="none" style="width:903px;height:328px;" version="1.1" viewBox="0 0 903 328" width="903.5354px" zoomAndPan="magnify"><defs/><g><rect fill="#FFFFFF" height="92.0139" style="stroke: #A80036; stroke-width: 0.5050505050505051;" width="5.0505" x="185.3535" y="73.0942"/><rect fill="#FFFFFF" height="49.2898" style="stroke: #A80036; stroke-width: 0.5050505050505051;" width="5.0505" x="433.8384" y="94.4563"/><line style="stroke: #A80036; stroke-width: 0.5050505050505051; stroke-dasharray: 5.0,5.0;" x1="63.6364" x2="63.6364" y1="22.7943" y2="322.747"/><line style="stroke: #A80036; stroke-width: 0.5050505050505051; stroke-dasharray: 5.0,5.0;" x1="187.8788" x2="187.8788" y1="22.7943" y2="322.747"/><line style="stroke: #A80036; stroke-width: 0.5050505050505051; stroke-dasharray: 5.0,5.0;" x1="312.1212" x2="312.1212" y1="22.7943" y2="322.747"/><line style="stroke: #A80036; stroke-width: 0.5050505050505051; stroke-dasharray: 5.0,5.0;" x1="436.3636" x2="436.3636" y1="22.7943" y2="322.747"/><line style="stroke: #A80036; stroke-width: 0.5050505050505051; stroke-dasharray: 5.0,5.0;" x1="560.6061" x2="560.6061" y1="22.7943" y2="322.747"/><line style="stroke: #A80036; stroke-width: 0.5050505050505051; stroke-dasharray: 5.0,5.0;" x1="715.1515" x2="715.1515" y1="22.7943" y2="322.747"/><line style="stroke: #A80036; stroke-width: 0.5050505050505051; stroke-dasharray: 5.0,5.0;" x1="839.3939" x2="839.3939" y1="22.7943" y2="322.747"/><rect fill="#F5F8FA" height="20.7741" style="stroke: #607985; stroke-width: 0.7575757575757576;" width="103.0303" x="12.1212" y="1.5152"/><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="6.5657" lengthAdjust="spacingAndGlyphs" textLength="16.1616" x="55.5556" y="14.1752">main</text><rect fill="#F5F8FA" height="20.7741" style="stroke: #607985; stroke-width: 0.7575757575757576;" width="103.0303" x="136.3636" y="1.5152"/><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="6.5657" lengthAdjust="spacingAndGlyphs" textLength="36.3636" x="169.697" y="14.1752">Scheduler</text><rect fill="#F5F8FA" height="20.7741" style="stroke: #607985; stroke-width: 0.7575757575757576;" width="103.0303" x="260.6061" y="1.5152"/><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="6.5657" lengthAdjust="spacingAndGlyphs" textLength="36.3636" x="293.9394" y="14.1752">tick hook</text><rect fill="#F5F8FA" height="20.7741" style="stroke: #607985; stroke-width: 0.7575757575757576;" width="103.0303" x="384.8485" y="1.5152"/><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="6.5657" lengthAdjust="spacingAndGlyphs" textLength="40.404" x="416.1616" y="14.1752">high probe</text><rect fill="#F5F8FA" height="20.7741" style="stroke: #607985; stroke-width: 0.7575757575757576;" width="103.0303" x="509.0909" y="1.5152"/><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="6.5657" lengthAdjust="spacingAndGlyphs" textLength="20.202" x="550.5051" y="14.1752">peerA</text><rect fill="#F5F8FA" height="20.7741" style="stroke: #607985; stroke-width: 0.7575757575757576;" width="103.0303" x="663.6364" y="1.5152"/><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="6.5657" lengthAdjust="spacingAndGlyphs" textLength="20.202" x="705.0505" y="14.1752">peerB</text><rect fill="#F5F8FA" height="20.7741" style="stroke: #607985; stroke-width: 0.7575757575757576;" width="103.0303" x="787.8788" y="1.5152"/><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="6.5657" lengthAdjust="spacingAndGlyphs" textLength="32.3232" x="823.2323" y="14.1752">verifier</text><rect fill="#FFFFFF" height="92.0139" style="stroke: #A80036; stroke-width: 0.5050505050505051;" width="5.0505" x="185.3535" y="73.0942"/><rect fill="#FFFFFF" height="49.2898" style="stroke: #A80036; stroke-width: 0.5050505050505051;" width="5.0505" x="433.8384" y="94.4563"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="560.6061" x2="581.8182" y1="45.1665" y2="45.1665"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="581.8182" x2="581.8182" y1="45.1665" y2="51.7322"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="561.1111" x2="581.8182" y1="51.7322" y2="51.7322"/><polygon fill="#607985" points="566.1616,49.712,561.1111,51.7322,566.1616,53.7524,564.1414,51.7322" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="8.0808" x="567.1717" y="39.4586">08</text><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="76.7677" x="579.2929" y="39.4586">marker before_raise</text><polygon fill="#607985" points="195.9596,71.074,190.9091,73.0942,195.9596,75.1144,193.9394,73.0942" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="192.9293" x2="560.101" y1="73.0942" y2="73.0942"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="101.0101" x="325" y="67.3863">vTaskPrioritySet(high, 3)</text><polygon fill="#607985" points="427.7778,92.4361,432.8283,94.4563,427.7778,96.4765,429.798,94.4563" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="190.404" x2="430.8081" y1="94.4563" y2="94.4563"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="8.0808" x="235.3535" y="88.7483">09</text><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="141.4141" x="247.4747" y="88.7483">immediate higher-priority selection</text><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="438.8889" x2="460.101" y1="115.8183" y2="115.8183"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="460.101" x2="460.101" y1="115.8183" y2="122.384"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="439.3939" x2="460.101" y1="122.384" y2="122.384"/><polygon fill="#607985" points="444.4444,120.3638,439.3939,122.384,444.4444,124.4042,442.4242,122.384" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="44.4444" x="445.4545" y="110.1104">marker HIGH</text><polygon fill="#607985" points="195.9596,141.7259,190.9091,143.7461,195.9596,145.7663,193.9394,143.7461" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="192.9293" x2="435.8586" y1="143.7461" y2="143.7461"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="68.6869" x="279.0404" y="138.0381">vTaskDelete(NULL)</text><polygon fill="#607985" points="554.5455,163.0879,559.596,165.1081,554.5455,167.1283,556.5657,165.1081" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="187.8788" x2="557.5758" y1="165.1081" y2="165.1081"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="64.6465" x="341.9192" y="159.4002">return to caller</text><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="560.6061" x2="581.8182" y1="199.6015" y2="199.6015"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="581.8182" x2="581.8182" y1="199.6015" y2="206.1671"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="561.1111" x2="581.8182" y1="206.1671" y2="206.1671"/><polygon fill="#607985" points="566.1616,204.1469,561.1111,206.1671,566.1616,208.1873,564.1414,206.1671" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="8.0808" x="567.1717" y="193.8935">10</text><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="129.2929" x="579.2929" y="193.8935">marker after_raise; request stop</text><polygon fill="#607985" points="193.4343,225.509,188.3838,227.5292,193.4343,229.5494,191.4141,227.5292" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="190.404" x2="560.101" y1="227.5292" y2="227.5292"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="133.3333" x="307.5758" y="221.8212">self-delete after bounded cleanup</text><polygon fill="#607985" points="193.4343,246.8711,188.3838,248.8913,193.4343,250.9115,191.4141,248.8913" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="190.404" x2="714.6465" y1="248.8913" y2="248.8913"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="8.0808" x="370.7071" y="243.1833">11</text><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="149.4949" x="382.8283" y="243.1833">second peer finishes and self-deletes</text><polygon fill="#607985" points="833.3333,281.3644,838.3838,283.3846,833.3333,285.4048,835.3535,283.3846" style="stroke: #607985; stroke-width: 0.5050505050505051;"/><line style="stroke: #607985; stroke-width: 0.6565656565656567;" x1="187.8788" x2="836.3636" y1="283.3846" y2="283.3846"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="8.0808" x="428.7879" y="277.6767">12</text><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="7.0707" lengthAdjust="spacingAndGlyphs" textLength="157.5758" x="440.9091" y="277.6767">lowest-priority verifier publishes PASS</text><path d="M129.2929,289.9503 L129.2929,314.6978 L897.4747,314.6978 L897.4747,295.0008 L892.4242,289.9503 L129.2929,289.9503 " fill="#F7F5ED" style="stroke: #8A887C; stroke-width: 0.5050505050505051;"/><path d="M892.4242,289.9503 L892.4242,295.0008 L897.4747,295.0008 L892.4242,289.9503 " fill="#F7F5ED" style="stroke: #8A887C; stroke-width: 0.5050505050505051;"/><text fill="#3E4B50" font-family="DejaVu Sans Mono" font-size="6.0606" lengthAdjust="spacingAndGlyphs" textLength="187.3737" x="394.4444" y="301.1314">Exact claim: marker projection before → HIGH → after.</text><text fill="#3E4B50" font-family="DejaVu Sans Mono" font-size="6.0606" lengthAdjust="spacingAndGlyphs" textLength="233.3333" x="394.4444" y="308.1864">Another Ready task may legally run before peerA is selected again.</text><!--MD5=[c6db4b1d8c2cb9893babda8a162190af]
@startuml
skinparam backgroundColor white
skinparam shadowing false
skinparam monochrome false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 14
skinparam defaultFontColor #24343D
skinparam titleFontName "DejaVu Sans Mono"
skinparam titleFontSize 13
skinparam titleFontColor #536B78
skinparam titleFontStyle plain
skinparam ArrowColor #607985
skinparam ArrowFontColor #425B67
skinparam ArrowThickness 1.3
skinparam LineThickness 1.3
skinparam nodesep 36
skinparam ranksep 42
skinparam Padding 6
skinparam classBackgroundColor #F5F8FA
skinparam classBorderColor #607985
skinparam classBorderThickness 1.5
skinparam classFontColor #1F3039
skinparam classFontSize 15
skinparam classAttributeFontColor #2E424D
skinparam classAttributeFontSize 13
skinparam classStereotypeFontColor #526B77
skinparam classStereotypeFontSize 11
skinparam minClassWidth 190
skinparam ClassAttributeIconSize 0
skinparam stateBackgroundColor #F5F8FA
skinparam stateBorderColor #607985
skinparam stateBorderThickness 1.5
skinparam stateFontColor #1F3039
skinparam stateFontSize 14
skinparam stateAttributeFontSize 13
skinparam noteBackgroundColor #F7F5ED
skinparam noteBorderColor #8A887C
skinparam noteFontColor #3E4B50
skinparam noteFontSize 12
skinparam ParticipantBackgroundColor #F5F8FA
skinparam ParticipantBorderColor #607985
skinparam ParticipantBorderThickness 1.5
skinparam ParticipantFontColor #1F3039
skinparam ParticipantFontSize 13
skinparam ActorBorderColor #607985
skinparam ActorFontColor #1F3039
skinparam LifeLineBorderColor #8297A1
skinparam LifeLineBackgroundColor #F9FBFC
skinparam SequenceArrowColor #607985
skinparam SequenceMessageAlign center
skinparam ParticipantPadding 18
skinparam BoxPadding 8
hide circle
hide empty members
scale 900 width
hide footbox
skinparam ParticipantPadding 16
participant "main" as Main
participant "Scheduler" as Scheduler
participant "tick hook" as Tick
participant "high probe" as High
participant "peerA" as A
participant "peerB" as B
participant "verifier" as Verify
A -> A : <b>08</b> marker before_raise
A -> Scheduler : vTaskPrioritySet(high, 3)
activate Scheduler
Scheduler -> High : <b>09</b> immediate higher-priority selection
activate High
High -> High : marker HIGH
High -> Scheduler : vTaskDelete(NULL)
deactivate High
Scheduler -> A : return to caller
deactivate Scheduler
||26||
A -> A : <b>10</b> marker after_raise; request stop
A -> Scheduler : self-delete after bounded cleanup
B -> Scheduler : <b>11</b> second peer finishes and self-deletes
||26||
Scheduler -> Verify : <b>12</b> lowest-priority verifier publishes PASS
note over Scheduler,Verify
Exact claim: marker projection before → HIGH → after.
Another Ready task may legally run before peerA is selected again.
end note
@enduml
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 25.0.4-ea+4-1-Debian
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: null
--></g></svg>