feat: publish FreeRTOS C FC08 card
This commit is contained in:
File diff suppressed because one or more lines are too long
+61
File diff suppressed because one or more lines are too long
+4239
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam ArrowColor #8095a1
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A2 STRUCTURE — mutex, owner, wait list and resource
|
||||
rectangle "01 Mutex\nQueueDefinition\nuxQueueType = mutex" as mutex
|
||||
rectangle "02 LowTask\nbase priority 1\neffective priority 1 → 3" as low
|
||||
rectangle "03 HighTask\npriority 3\nblocked on mutex" as high
|
||||
rectangle "04 MediumTask\npriority 2\nReady, not executed" as medium
|
||||
rectangle "05 protected value\n1 → 2" as resource
|
||||
low --> mutex : owns
|
||||
high ..> mutex : waits forever
|
||||
mutex --> low : inherits 3
|
||||
medium ..> low : cannot preempt 3
|
||||
low --> resource : guarded write 1
|
||||
high --> resource : guarded write 2
|
||||
@enduml
|
||||
@@ -0,0 +1,44 @@
|
||||
<?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="529px" preserveAspectRatio="none" style="width:475px;height:529px;" version="1.1" viewBox="0 0 475 529" width="475px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="305" x="89" y="12.8281">A2 STRUCTURE — mutex, owner, wait list and resource</text><!--MD5=[a15aec3e997c0b90fdfa616e6e255e24]
|
||||
entity mutex--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="145" x="6" y="171.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="16" y="194.4222">01 Mutex</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="16" y="210.7663">QueueDefinition</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="125" x="16" y="227.1104">uxQueueType = mutex</text><!--MD5=[cce3472c5646352849134f9dadeb1b6a]
|
||||
entity low--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="144" x="124.5" y="318.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="134.5" y="341.4522">02 LowTask</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="80" x="134.5" y="357.7963">base priority 1</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="124" x="134.5" y="374.1404">effective priority 1 → 3</text><!--MD5=[14d0722cf5b909ee93912fd030bf9990]
|
||||
entity high--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="118" x="172.5" y="24.5541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="69" x="182.5" y="47.3822">03 HighTask</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="182.5" y="63.7263">priority 3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="98" x="182.5" y="80.0704">blocked on mutex</text><!--MD5=[67463a8a93d235c1b9ef492366a72a88]
|
||||
entity medium--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="132" x="185.5" y="171.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="89" x="195.5" y="194.4222">04 MediumTask</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="195.5" y="210.7663">priority 2</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="195.5" y="227.1104">Ready, not executed</text><!--MD5=[9c9f7c63b55d39a846ab63348ec12139]
|
||||
entity resource--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="124" x="228.5" y="465.6541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="104" x="238.5" y="488.4822">05 protected value</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="30" x="238.5" y="504.8263">1 → 2</text><!--MD5=[158e2903b1020e11f99bcb9ea11d8868]
|
||||
link low to mutex--><path d="M124.1,329.8641 C104.98,320.3241 86.61,306.9941 75.5,288.6241 C68.13,276.4341 67.02,261.2341 68.38,247.2741 " fill="none" id="low->mutex" style="stroke: #8095A1; stroke-width: 1.0;"/><polygon fill="#8095A1" points="68.98,242.4641,63.9065,250.9057,68.3668,247.4264,71.8461,251.8867,68.98,242.4641" style="stroke: #8095A1; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="29" x="76.5" y="284.4522">owns</text><!--MD5=[8d649ca47fa06143feec8f30a0ad6d1f]
|
||||
link mutex to low--><path d="M106.17,241.1141 C123.77,262.7541 146.62,290.8341 164.93,313.3441 " fill="none" id="mutex->low" style="stroke: #8095A1; stroke-width: 1.0;"/><polygon fill="#8095A1" points="168.05,317.1741,165.462,307.6714,164.89,313.2992,159.2622,312.7273,168.05,317.1741" style="stroke: #8095A1; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="145.56" y="284.4522">inherits 3</text><!--MD5=[0cda02ad73f7217ff83b08c55d25c68b]
|
||||
link high to mutex--><path d="M195.63,94.0741 C172.61,115.9041 142.67,144.2741 118.83,166.8741 " fill="none" id="high->mutex" style="stroke: #8095A1; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#8095A1" points="115.25,170.2741,124.532,166.9811,118.8771,166.8326,119.0256,161.1777,115.25,170.2741" style="stroke: #8095A1; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="165.16" y="137.4222">waits forever</text><!--MD5=[dcb993e83586dad779f044de8c3c68b5]
|
||||
link medium to low--><path d="M238.6,241.1141 C230.5,262.4741 220.02,290.1241 211.54,312.4941 " fill="none" id="medium->low" style="stroke: #8095A1; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#8095A1" points="209.85,316.9341,216.7999,309.9557,211.6353,312.2637,209.3273,307.0991,209.85,316.9341" style="stroke: #8095A1; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="99" x="228.29" y="284.4522">cannot preempt 3</text><!--MD5=[3a9e305dea604aa08f760e06e749e231]
|
||||
link low to resource--><path d="M219.74,387.9741 C234.87,410.0041 254.47,438.5441 269.2,459.9941 " fill="none" id="low->resource" style="stroke: #8095A1; stroke-width: 1.0;"/><polygon fill="#8095A1" points="271.98,464.0341,270.1774,454.3516,269.1474,459.9139,263.5851,458.8839,271.98,464.0341" style="stroke: #8095A1; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="88" x="252.92" y="431.4822">guarded write 1</text><!--MD5=[1010f4c599cbe540e9eb0f4a1139d543]
|
||||
link high to resource--><path d="M274.65,93.9941 C296.71,113.9941 321.57,141.2941 334.5,171.5941 C380.63,279.7141 396.21,327.7841 349.5,435.6541 C345.43,445.0441 338.9,453.5741 331.64,460.9741 " fill="none" id="high->resource" style="stroke: #8095A1; stroke-width: 1.0;"/><polygon fill="#8095A1" points="328.12,464.3741,337.3615,460.9689,331.7052,460.8889,331.7852,455.2326,328.12,464.3741" style="stroke: #8095A1; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="88" x="375.57" y="284.4522">guarded write 2</text><!--MD5=[f0e877ce0d9c10f109572c3cca054c6b]
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam ArrowColor #8095a1
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A2 STRUCTURE — mutex, owner, wait list and resource
|
||||
rectangle "01 Mutex\nQueueDefinition\nuxQueueType = mutex" as mutex
|
||||
rectangle "02 LowTask\nbase priority 1\neffective priority 1 → 3" as low
|
||||
rectangle "03 HighTask\npriority 3\nblocked on mutex" as high
|
||||
rectangle "04 MediumTask\npriority 2\nReady, not executed" as medium
|
||||
rectangle "05 protected value\n1 → 2" as resource
|
||||
low - -> mutex : owns
|
||||
high ..> mutex : waits forever
|
||||
mutex - -> low : inherits 3
|
||||
medium ..> low : cannot preempt 3
|
||||
low - -> resource : guarded write 1
|
||||
high - -> resource : guarded write 2
|
||||
@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>
|
||||
|
After Width: | Height: | Size: 8.0 KiB |
@@ -0,0 +1,20 @@
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A4 APPLICATION — deterministic three-task topology
|
||||
rectangle "01 main\ncreates mutex, verifier, Low" as main
|
||||
rectangle "02 Low p1\ntakes mutex\ncreates High" as low
|
||||
rectangle "03 High p3\nblocks on mutex" as high
|
||||
rectangle "04 Low effective p3\ncreates Medium" as inherited
|
||||
rectangle "05 Medium p2\nReady, still not run" as medium
|
||||
rectangle "06 verifier p0\nchecks relational invariants" as verifier
|
||||
main --> low
|
||||
low --> high
|
||||
high --> inherited : block transfers priority
|
||||
inherited --> medium
|
||||
medium --> verifier : after release and completion
|
||||
@enduml
|
||||
@@ -0,0 +1,43 @@
|
||||
<?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="706px" preserveAspectRatio="none" style="width:311px;height:706px;" version="1.1" viewBox="0 0 311 706" width="311px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="297" x="2" y="12.8281">A4 APPLICATION — deterministic three-task topology</text><!--MD5=[53ccf4b3ee6cf4337a0ab93ac09644f3]
|
||||
entity main--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="174" x="19.5" y="23.8741"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="29.5" y="46.7022">01 main</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="154" x="29.5" y="63.0463">creates mutex, verifier, Low</text><!--MD5=[cce3472c5646352849134f9dadeb1b6a]
|
||||
entity low--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="91" x="61" y="137.5541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="56" x="71" y="160.3822">02 Low p1</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="68" x="71" y="176.7263">takes mutex</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="71" x="71" y="193.0704">creates High</text><!--MD5=[14d0722cf5b909ee93912fd030bf9990]
|
||||
entity high--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="110" x="51.5" y="267.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="61.5" y="290.4222">03 High p3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="61.5" y="306.7663">blocks on mutex</text><!--MD5=[a72fd6fd2c7445310e521336cd23ff95]
|
||||
entity inherited--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="127" x="43" y="398.2841"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="107" x="53" y="421.1122">04 Low effective p3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="53" y="437.4563">creates Medium</text><!--MD5=[67463a8a93d235c1b9ef492366a72a88]
|
||||
entity medium--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="122" x="45.5" y="511.9641"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="80" x="55.5" y="534.7922">05 Medium p2</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="55.5" y="551.1363">Ready, still not run</text><!--MD5=[58638f16dd491473315bd2a16a4aea64]
|
||||
entity verifier--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="172" x="20.5" y="642.6541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="30.5" y="665.4822">06 verifier p0</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="152" x="30.5" y="681.8263">checks relational invariants</text><!--MD5=[12334806b334ec52b39196ebc84ccb0c]
|
||||
link main to low--><path d="M106.5,76.9241 C106.5,92.6141 106.5,112.9941 106.5,130.7841 " fill="none" id="main->low" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="106.5,135.6941,110.5,126.6941,106.5,130.6941,102.5,126.6941,106.5,135.6941" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[703d9bc15c2727fc6f79bca221395ebb]
|
||||
link low to high--><path d="M106.5,206.7841 C106.5,223.7741 106.5,244.2741 106.5,261.0141 " fill="none" id="low->high" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="106.5,265.9441,110.5,256.9441,106.5,260.9441,102.5,256.9441,106.5,265.9441" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[3397666f604e9ab039a17ff3600e78ab]
|
||||
link high to inherited--><path d="M106.5,320.6641 C106.5,341.0941 106.5,369.7641 106.5,391.6641 " fill="none" id="high->inherited" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="106.5,396.4241,110.5,387.4241,106.5,391.4241,102.5,387.4241,106.5,396.4241" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="126" x="107.5" y="364.1122">block transfers priority</text><!--MD5=[639fa6b22c49e64175e5f52319ab2e1f]
|
||||
link inherited to medium--><path d="M106.5,451.2441 C106.5,467.4241 106.5,488.4341 106.5,505.6541 " fill="none" id="inherited->medium" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="106.5,510.2941,110.5,501.2941,106.5,505.2941,102.5,501.2941,106.5,510.2941" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[04d1b0886790690bf8262ad86ae766f5]
|
||||
link medium to verifier--><path d="M106.5,565.0441 C106.5,585.4741 106.5,614.1441 106.5,636.0441 " fill="none" id="medium->verifier" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="106.5,640.7941,110.5,631.7941,106.5,635.7941,102.5,631.7941,106.5,640.7941" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="107.5" y="608.4822">after release and completion</text><!--MD5=[c9d1b2d0cd83cfe035dba781dc2b891b]
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A4 APPLICATION — deterministic three-task topology
|
||||
rectangle "01 main\ncreates mutex, verifier, Low" as main
|
||||
rectangle "02 Low p1\ntakes mutex\ncreates High" as low
|
||||
rectangle "03 High p3\nblocks on mutex" as high
|
||||
rectangle "04 Low effective p3\ncreates Medium" as inherited
|
||||
rectangle "05 Medium p2\nReady, still not run" as medium
|
||||
rectangle "06 verifier p0\nchecks relational invariants" as verifier
|
||||
main - -> low
|
||||
low - -> high
|
||||
high - -> inherited : block transfers priority
|
||||
inherited - -> medium
|
||||
medium - -> verifier : after release and completion
|
||||
@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>
|
||||
|
After Width: | Height: | Size: 6.8 KiB |
@@ -0,0 +1,36 @@
|
||||
@startuml
|
||||
scale 600 width
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 11
|
||||
skinparam sequenceArrowColor #8095a1
|
||||
skinparam sequenceLifeLineBorderColor #8095a1
|
||||
title A5 FLOW — priority inheritance and bounded inversion
|
||||
participant "Low p1" as L
|
||||
participant Mutex as M
|
||||
participant "High p3" as H
|
||||
participant "Medium p2" as D
|
||||
participant "Verifier p0" as V
|
||||
L -> M : 02 take; protected=1
|
||||
L -> H : create
|
||||
activate H
|
||||
H -> M : 03 take(portMAX_DELAY)
|
||||
H --> L : Blocked; owner inherits p3
|
||||
deactivate H
|
||||
L -> L : 04 effective=3; holder=Low
|
||||
L -> D : create
|
||||
L -> L : 05 Medium Ready, started=0
|
||||
L -> M : 06 give
|
||||
activate H
|
||||
M --> H : 07 acquire before give returns
|
||||
H -> M : protected=2; give; delete
|
||||
deactivate H
|
||||
activate D
|
||||
D -> D : 08 run after High
|
||||
D -> D : delete
|
||||
deactivate D
|
||||
L -> L : 09 effective restored to p1
|
||||
L -> V : completed
|
||||
V -> V : 10 PASS + stable digest
|
||||
@enduml
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,20 @@
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam stateBorderColor #2c7794
|
||||
skinparam stateBackgroundColor #edf6fa
|
||||
title A6 STATE — owner, waiter and effective priority
|
||||
[*] --> Free : 01 mutex created
|
||||
Free --> OwnedP1 : 02 Low takes
|
||||
OwnedP1 --> ContendedP3 : 03 High blocks
|
||||
ContendedP3 : owner Low
|
||||
ContendedP3 : base 1 / effective 3
|
||||
ContendedP3 : Medium Ready / not run
|
||||
ContendedP3 --> Transferred : 06 Low gives
|
||||
Transferred : 07 High owns
|
||||
Transferred --> Free : High gives
|
||||
Free --> Verified : 09 Low restored to 1
|
||||
Verified --> [*] : 10 PASS
|
||||
@enduml
|
||||
@@ -0,0 +1,39 @@
|
||||
<?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="605px" preserveAspectRatio="none" style="width:403px;height:605px;" version="1.1" viewBox="0 0 403 605" width="403px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="266" x="72" y="12.8281">A6 STATE — owner, waiter and effective priority</text><ellipse cx="195.5" cy="34.2841" fill="#000000" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#EDF6FA" height="50" rx="12.5" ry="12.5" style="stroke: #2C7794; stroke-width: 1.5;" width="50" x="170.5" y="122.2841"/><line style="stroke: #2C7794; stroke-width: 1.5;" x1="170.5" x2="220.5" y1="148.6282" y2="148.6282"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="183" y="140.1122">Free</text><rect fill="#EDF6FA" height="50" rx="12.5" ry="12.5" style="stroke: #2C7794; stroke-width: 1.5;" width="73" x="45" y="250.2841"/><line style="stroke: #2C7794; stroke-width: 1.5;" x1="45" x2="118" y1="276.6282" y2="276.6282"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="53" x="55" y="268.1122">OwnedP1</text><rect fill="#EDF6FA" height="85.3765" rx="12.5" ry="12.5" style="stroke: #2C7794; stroke-width: 1.5;" width="153" x="6" y="378.2841"/><line style="stroke: #2C7794; stroke-width: 1.5;" x1="6" x2="159" y1="404.6282" y2="404.6282"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="45" y="396.1122">ContendedP3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="11" y="422.4563">owner Low</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="105" x="11" y="438.8004">base 1 / effective 3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="133" x="11" y="455.1445">Medium Ready / not run</text><rect fill="#EDF6FA" height="52.6882" rx="12.5" ry="12.5" style="stroke: #2C7794; stroke-width: 1.5;" width="95" x="161" y="541.6541"/><line style="stroke: #2C7794; stroke-width: 1.5;" x1="161" x2="256" y1="567.9982" y2="567.9982"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="67" x="175" y="559.4822">Transferred</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="166" y="585.8263">07 High owns</text><rect fill="#EDF6FA" height="50" rx="12.5" ry="12.5" style="stroke: #2C7794; stroke-width: 1.5;" width="63" x="168" y="250.2841"/><line style="stroke: #2C7794; stroke-width: 1.5;" x1="168" x2="231" y1="276.6282" y2="276.6282"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="43" x="178" y="268.1122">Verified</text><ellipse cx="204.5" cy="420.9641" fill="none" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="205" cy="421.4641" fill="#000000" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><!--MD5=[f16808fa220dde377303612249059854]
|
||||
link *start to Free--><path d="M195.5,44.7441 C195.5,60.2741 195.5,91.8041 195.5,115.6341 " fill="none" id="*start->Free" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="195.5,120.6241,199.5,111.6241,195.5,115.6241,191.5,111.6241,195.5,120.6241" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="98" x="196.5" y="88.1122">01 mutex created</text><!--MD5=[501b358165cde79f7c2d9368da34d356]
|
||||
link Free to OwnedP1--><path d="M170.17,159.1341 C151.48,168.2541 126.6,182.9241 110.5,202.2841 C100.56,214.2241 93.69,230.0241 89.14,243.7741 " fill="none" id="Free->OwnedP1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="87.67,248.4841,94.1648,241.0802,89.1565,243.7102,86.5265,238.7019,87.67,248.4841" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="72" x="111.5" y="216.1122">02 Low takes</text><!--MD5=[47f755e6136f275da9d5c2abb6ef1f4e]
|
||||
link OwnedP1 to ContendedP3--><path d="M79.85,300.7341 C79.31,309.9841 78.77,320.6141 78.5,330.2841 C78.13,343.6641 78.46,358.1741 79.06,371.5441 " fill="none" id="OwnedP1->ContendedP3" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="79.3,376.4841,82.8574,367.3002,79.0567,371.49,74.8669,367.6894,79.3,376.4841" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="81" x="79.5" y="344.1122">03 High blocks</text><!--MD5=[d551b0a612c4cc3e8fc91ace74e2f28d]
|
||||
link ContendedP3 to Transferred--><path d="M118.94,463.9141 C139.22,487.2541 163.98,515.7541 182.32,536.8641 " fill="none" id="ContendedP3->Transferred" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="185.38,540.3841,182.5219,530.9591,182.1108,536.601,176.4689,536.1898,185.38,540.3841" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="71" x="157.79" y="507.4822">06 Low gives</text><!--MD5=[a84124c6e555879d9924e48ec8779708]
|
||||
link Transferred to Free--><path d="M228.94,541.5141 C276.4,479.0441 384.72,315.1441 312.5,202.2841 C293.78,173.0241 254.73,159.3941 226.9,153.1941 " fill="none" id="Transferred->Free" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="222.27,152.2241,230.2724,157.9654,227.1662,153.2376,231.894,150.1315,222.27,152.2241" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="333.45" y="344.1122">High gives</text><!--MD5=[ef5db961bf1e2ec60cc0efc50706216c]
|
||||
link Free to Verified--><path d="M193.2,172.6241 C192.21,186.5841 191.48,204.4241 192.5,220.2841 C192.99,227.8741 193.86,236.0241 194.83,243.6341 " fill="none" id="Free->Verified" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="195.46,248.3841,198.2426,238.9365,194.8029,243.4275,190.312,239.9878,195.46,248.3841" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="114" x="193.5" y="216.1122">09 Low restored to 1</text><!--MD5=[3391b27f901edca95c58505de7f5bba8]
|
||||
link Verified to *end--><path d="M200.35,300.6541 C201.38,330.2241 203.08,379.2041 203.95,404.2141 " fill="none" id="Verified->*end" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="204.12,409.0841,207.7832,399.9418,203.9344,404.0876,199.7887,400.2388,204.12,409.0841" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="46" x="203" y="344.1122">10 PASS</text><!--MD5=[c9a37395c6029eb0a0ab9bdfe4607e46]
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam stateBorderColor #2c7794
|
||||
skinparam stateBackgroundColor #edf6fa
|
||||
title A6 STATE — owner, waiter and effective priority
|
||||
[*] - -> Free : 01 mutex created
|
||||
Free - -> OwnedP1 : 02 Low takes
|
||||
OwnedP1 - -> ContendedP3 : 03 High blocks
|
||||
ContendedP3 : owner Low
|
||||
ContendedP3 : base 1 / effective 3
|
||||
ContendedP3 : Medium Ready / not run
|
||||
ContendedP3 - -> Transferred : 06 Low gives
|
||||
Transferred : 07 High owns
|
||||
Transferred - -> Free : High gives
|
||||
Free - -> Verified : 09 Low restored to 1
|
||||
Verified - -> [*] : 10 PASS
|
||||
@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>
|
||||
|
After Width: | Height: | Size: 8.1 KiB |
@@ -0,0 +1,22 @@
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A7 RUNTIME — public evidence and debugger-only TCB detail
|
||||
rectangle "01 g_fc08\nmutex handle\nprotected_value" as experiment
|
||||
rectangle "02 Low handle / stack\nuxTaskPriorityGet = 3\nmutex holder = Low" as low
|
||||
rectangle "03 High handle / stack\neTaskState = Blocked" as high
|
||||
rectangle "04 Medium handle / stack\neTaskState = Ready\nstarted = 0" as medium
|
||||
rectangle "05 kernel TCB evidence\nuxBasePriority = 1\nuxPriority = 3\n(debugger only)" as tcb
|
||||
rectangle "06 g_fc08_events[10]\ncommit marker last\ndigest 5433b784" as log
|
||||
experiment --> low
|
||||
experiment --> high
|
||||
experiment --> medium
|
||||
low ..> tcb
|
||||
low --> log
|
||||
high --> log
|
||||
medium --> log
|
||||
@enduml
|
||||
@@ -0,0 +1,47 @@
|
||||
<?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="378px" preserveAspectRatio="none" style="width:539px;height:378px;" version="1.1" viewBox="0 0 539 378" width="539px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="344" x="101" y="12.8281">A7 RUNTIME — public evidence and debugger-only TCB detail</text><!--MD5=[b15dda4ed305ababd0a15fef38b4eb6d]
|
||||
entity experiment--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="109" x="204" y="23.9041"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="53" x="214" y="46.7322">01 g_fc08</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="214" y="63.0763">mutex handle</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="89" x="214" y="79.4204">protected_value</text><!--MD5=[cce3472c5646352849134f9dadeb1b6a]
|
||||
entity low--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="139" x="13" y="152.9341"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="23" y="175.7622">02 Low handle / stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="23" y="192.1063">uxTaskPriorityGet = 3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="23" y="208.4504">mutex holder = Low</text><!--MD5=[14d0722cf5b909ee93912fd030bf9990]
|
||||
entity high--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="143" x="187" y="161.1041"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="123" x="197" y="183.9322">03 High handle / stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="197" y="200.2763">eTaskState = Blocked</text><!--MD5=[67463a8a93d235c1b9ef492366a72a88]
|
||||
entity medium--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="163" x="365" y="152.9341"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="375" y="175.7622">04 Medium handle / stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="375" y="192.1063">eTaskState = Ready</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="375" y="208.4504">started = 0</text><!--MD5=[0bb6f33dfd49e802fce6b5273bbb9861]
|
||||
entity tcb--><rect fill="#EDF6FA" height="85.3765" style="stroke: #2C7794; stroke-width: 1.5;" width="151" x="6" y="281.9641"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="131" x="16" y="304.7922">05 kernel TCB evidence</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="16" y="321.1363">uxBasePriority = 1</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="16" y="337.4804">uxPriority = 3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="88" x="16" y="353.8245">(debugger only)</text><!--MD5=[30ba7fb1050e29c0f3290b9e87c281e8]
|
||||
entity log--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="137" x="192" y="290.1441"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="202" y="312.9722">06 g_fc08_events[10]</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="202" y="329.3163">commit marker last</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="202" y="345.6604">digest 5433b784</text><!--MD5=[a07dc87dcfb0b2eb65d67fc065adae59]
|
||||
link experiment to low--><path d="M211.8,93.1241 C188.03,110.2841 159.06,131.1941 134.57,148.8641 " fill="none" id="experiment->low" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="130.65,151.7041,140.2886,149.6799,134.7041,148.7777,135.6063,143.1933,130.65,151.7041" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b9522d85cf839a8565f9ff7433ad213c]
|
||||
link experiment to high--><path d="M258.5,93.1241 C258.5,112.1441 258.5,135.7741 258.5,154.5041 " fill="none" id="experiment->high" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="258.5,159.1341,262.5,150.1341,258.5,154.1341,254.5,150.1341,258.5,159.1341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[bdfc17e4d28f793dfed890547445afdf]
|
||||
link experiment to medium--><path d="M308.39,93.1241 C333.88,110.3541 364.98,131.3641 391.2,149.0841 " fill="none" id="experiment->medium" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="395.13,151.7341,389.9132,143.3804,390.9874,148.9343,385.4335,150.0085,395.13,151.7341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[d1d32904c2db3aa5fd00d4abf93eace5]
|
||||
link low to tcb--><path d="M82.25,222.2241 C82.13,238.2441 81.99,257.6841 81.86,275.2341 " fill="none" id="low->tcb" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="81.82,280.0941,85.897,271.1287,81.8629,275.0943,77.8973,271.0602,81.82,280.0941" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f75079b6a5a27a1736afb6bbdc48a346]
|
||||
link low to log--><path d="M126.96,222.2241 C152.44,241.5741 184.5,265.9241 210.81,285.9141 " fill="none" id="low->log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="214.79,288.9341,210.0245,280.315,210.802,285.9181,205.1989,286.6957,214.79,288.9341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[68c15f91978f47105a96b7f20109a11a]
|
||||
link high to log--><path d="M258.88,214.2041 C259.17,233.7241 259.57,260.9341 259.9,283.3341 " fill="none" id="high->log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="259.98,288.3041,263.8251,279.2369,259.8943,283.3048,255.8263,279.374,259.98,288.3041" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[77629c9d82df5c801e52420ef1e6f761]
|
||||
link medium to log--><path d="M400.04,222.2241 C373.3,241.6641 339.64,266.1241 312.08,286.1641 " fill="none" id="medium->log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="308.23,288.9541,317.8604,286.8915,312.2724,286.0116,313.1524,280.4236,308.23,288.9541" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2abf51212c5b55463d94c6e77e5944b9]
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A7 RUNTIME — public evidence and debugger-only TCB detail
|
||||
rectangle "01 g_fc08\nmutex handle\nprotected_value" as experiment
|
||||
rectangle "02 Low handle / stack\nuxTaskPriorityGet = 3\nmutex holder = Low" as low
|
||||
rectangle "03 High handle / stack\neTaskState = Blocked" as high
|
||||
rectangle "04 Medium handle / stack\neTaskState = Ready\nstarted = 0" as medium
|
||||
rectangle "05 kernel TCB evidence\nuxBasePriority = 1\nuxPriority = 3\n(debugger only)" as tcb
|
||||
rectangle "06 g_fc08_events[10]\ncommit marker last\ndigest 5433b784" as log
|
||||
experiment - -> low
|
||||
experiment - -> high
|
||||
experiment - -> medium
|
||||
low ..> tcb
|
||||
low - -> log
|
||||
high - -> log
|
||||
medium - -> log
|
||||
@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>
|
||||
|
After Width: | Height: | Size: 8.1 KiB |
@@ -0,0 +1,20 @@
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A8 PATTERNS — choose the synchronization contract
|
||||
rectangle "01 Critical section\nvery short CPU-local invariant\nnever block" as critical
|
||||
rectangle "02 Scheduler suspension\ndefer scheduling\ninterrupts still run" as suspend
|
||||
rectangle "03 Mutex\nownership + priority inheritance\ntask context only" as mutex
|
||||
rectangle "04 Gatekeeper task\nsingle resource owner\nmessage-based access" as gatekeeper
|
||||
critical -[hidden]right- suspend
|
||||
suspend -[hidden]right- mutex
|
||||
mutex -[hidden]right- gatekeeper
|
||||
note bottom of mutex
|
||||
FC08 selects this contract.
|
||||
A binary semaphore would not prove PIP.
|
||||
end note
|
||||
@enduml
|
||||
@@ -0,0 +1,39 @@
|
||||
<?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="208px" preserveAspectRatio="none" style="width:812px;height:208px;" version="1.1" viewBox="0 0 812 208" width="812px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="296" x="261.5" y="12.8281">A8 PATTERNS — choose the synchronization contract</text><!--MD5=[0c94bbd458004588e03de05ccccd09d9]
|
||||
entity critical--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="185" x="6" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="99" x="16" y="47.4522">01 Critical section</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="165" x="16" y="63.7963">very short CPU-local invariant</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="16" y="80.1404">never block</text><!--MD5=[e9b87bd7eea3cd1afcf2413a9fa81c40]
|
||||
entity suspend--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="159" x="226" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="139" x="236" y="47.4522">02 Scheduler suspension</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="236" y="63.7963">defer scheduling</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="99" x="236" y="80.1404">interrupts still run</text><!--MD5=[a15aec3e997c0b90fdfa616e6e255e24]
|
||||
entity mutex--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="197" x="420" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="430" y="47.4522">03 Mutex</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="177" x="430" y="63.7963">ownership + priority inheritance</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="430" y="80.1404">task context only</text><!--MD5=[c47f0c0e15548abdaedf4a672b82b47b]
|
||||
entity gatekeeper--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="150" x="651.5" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="661.5" y="47.4522">04 Gatekeeper task</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="124" x="661.5" y="63.7963">single resource owner</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="130" x="661.5" y="80.1404">message-based access</text><path d="M393.5,153.6541 L393.5,196.3423 A0,0 0 0 0 393.5,196.3423 L643.5,196.3423 A0,0 0 0 0 643.5,196.3423 L643.5,163.6541 L633.5,153.6541 L522.5,153.6541 L518.5,93.9941 L514.5,153.6541 L393.5,153.6541 A0,0 0 0 0 393.5,153.6541 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M633.5,153.6541 L633.5,163.6541 L643.5,163.6541 L633.5,153.6541 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="145" x="399.5" y="171.4822">FC08 selects this contract.</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="229" x="399.5" y="187.8263">A binary semaphore would not prove PIP.</text><!--MD5=[43f9e7dad0b185143c57098fbc752e3b]
|
||||
link critical to suspend--><!--MD5=[8c3c9b66a323ecbbfdeb4278884cf545]
|
||||
link suspend to mutex--><!--MD5=[23c46de2c675a24a276d91376df1cd89]
|
||||
link mutex to gatekeeper--><!--MD5=[30f74b2029b88fbb954d44fee45dd65e]
|
||||
@startuml
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2c7794
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
title A8 PATTERNS — choose the synchronization contract
|
||||
rectangle "01 Critical section\nvery short CPU-local invariant\nnever block" as critical
|
||||
rectangle "02 Scheduler suspension\ndefer scheduling\ninterrupts still run" as suspend
|
||||
rectangle "03 Mutex\nownership + priority inheritance\ntask context only" as mutex
|
||||
rectangle "04 Gatekeeper task\nsingle resource owner\nmessage-based access" as gatekeeper
|
||||
critical -[hidden]right- suspend
|
||||
suspend -[hidden]right- mutex
|
||||
mutex -[hidden]right- gatekeeper
|
||||
note bottom of mutex
|
||||
FC08 selects this contract.
|
||||
A binary semaphore would not prove PIP.
|
||||
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>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
@@ -0,0 +1,15 @@
|
||||
<!doctype html>
|
||||
<html lang="pl">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="card-renderer" content="react">
|
||||
<title>Karta pracy</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link rel="stylesheet" href="app.css">
|
||||
</head>
|
||||
<body class="resource-header-enabled">
|
||||
<div id="root"></div>
|
||||
<script type="module" src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user