feat: publish FreeRTOS C FC08 card

This commit is contained in:
2026-07-19 16:36:03 +02:00
commit 2e82515c3b
199 changed files with 59703 additions and 0 deletions
+1
View File
File diff suppressed because one or more lines are too long
+61
View File
File diff suppressed because one or more lines are too long
+4239
View File
File diff suppressed because one or more lines are too long
+21
View File
@@ -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
+44
View File
@@ -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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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

+20
View File
@@ -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
+43
View File
@@ -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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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

+36
View File
@@ -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

+20
View File
@@ -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
+39
View File
@@ -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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;*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

+22
View File
@@ -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
+47
View File
@@ -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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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

+20
View File
@@ -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
+39
View File
@@ -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

+15
View File
@@ -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>
+39
View File
File diff suppressed because one or more lines are too long