feat: publish FreeRTOS C FC09 card

This commit is contained in:
2026-07-19 16:36:03 +02:00
commit 1d44b1c8c6
200 changed files with 60601 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 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 A2 STRUCTURE — one EventGroup and disjoint masks
rectangle "01 EventGroup\nEventBits_t value" as group
rectangle "02 READY mask\nA=0x01 B=0x02\nALL=0x03" as ready
rectangle "03 SYNC mask\nA=0x10 B=0x20 C=0x40\nALL=0x70" as sync
rectangle "04 coordinator p3\nwait ALL-ready\nsync C" as coordinator
rectangle "05 worker A p2\nset READY_A\nsync A" as a
rectangle "06 worker B p1\nset READY_B\nsync B" as b
ready --> group
sync --> group
coordinator --> group
a --> group
b --> group
@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="217px" preserveAspectRatio="none" style="width:744px;height:217px;" version="1.1" viewBox="0 0 744 217" width="744px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="300" x="225.5" y="12.8281">A2 STRUCTURE — one EventGroup and disjoint masks</text><!--MD5=[1d1cacbd73a0126b771be7b0c6d45549]
entity group--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="114" x="339" y="153.6541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="83" x="349" y="176.4822">01 EventGroup</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="349" y="192.8263">EventBits_t value</text><!--MD5=[55a3d76f9f066a914db2e6a0219879c4]
entity ready--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="108" x="6" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="88" x="16" y="47.4522">02 READY mask</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="16" y="63.7963">A=0x01 B=0x02</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="16" y="80.1404">ALL=0x03</text><!--MD5=[8b44882b8e17850e01b1ad5c18eac763]
entity sync--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="152" x="149" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="81" x="159" y="47.4522">03 SYNC mask</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="159" y="63.7963">A=0x10 B=0x20 C=0x40</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="159" y="80.1404">ALL=0x70</text><!--MD5=[4d302acd527bc9f790d99ea65b823e73]
entity coordinator--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="119" x="336.5" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="99" x="346.5" y="47.4522">04 coordinator p3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="82" x="346.5" y="63.7963">wait ALL-ready</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="36" x="346.5" y="80.1404">sync C</text><!--MD5=[f83ae91a690dfc657e1c5fbbd818f13d]
entity a--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="104" x="490" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="500" y="47.4522">05 worker A p2</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="71" x="500" y="63.7963">set READY_A</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="36" x="500" y="80.1404">sync A</text><!--MD5=[5d12e840fb55afd9ed7b3559a638e8f7]
entity b--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="104" x="629" y="24.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="639" y="47.4522">06 worker B p1</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="71" x="639" y="63.7963">set READY_B</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="36" x="639" y="80.1404">sync B</text><!--MD5=[d5246341e733db5b811f0ee5cc5d1732]
link ready to group--><path d="M114.34,86.2941 C120.26,88.8841 126.22,91.3841 132,93.6541 C199.35,120.1041 278.55,144.8941 332.52,160.8741 " fill="none" id="ready-&gt;group" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="337.19,162.2541,329.6875,155.8735,332.3939,160.841,327.4264,163.5474,337.19,162.2541" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f24511f33fdd0582ce0fdb9d828196a1]
link sync to group--><path d="M273.54,93.8841 C298.89,111.5041 329.61,132.8541 353.94,149.7641 " fill="none" id="sync-&gt;group" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="357.79,152.4341,352.6793,144.0151,353.6832,149.5821,348.1161,150.586,357.79,152.4341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[67d154702bc50ed38af1f7c321d819e8]
link coordinator to group--><path d="M396,93.8841 C396,110.6041 396,130.6841 396,147.1441 " fill="none" id="coordinator-&gt;group" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="396,151.9741,400,142.9741,396,146.9741,392,142.9741,396,151.9741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a6ae9f49857fb04940e522319e51d9d6]
link a to group--><path d="M500.55,93.8841 C479.01,111.4241 452.93,132.6541 432.21,149.5241 " fill="none" id="a-&gt;group" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="428.51,152.5341,438.0127,149.9461,432.3849,149.3742,432.9568,143.7463,428.51,152.5341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[217721867f94675bdac4e6f4641b6044]
link b to group--><path d="M628.81,85.6041 C622.83,88.3841 616.8,91.1141 611,93.6541 C560.57,115.7041 502.51,138.6041 459.45,155.1341 " fill="none" id="b-&gt;group" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="454.89,156.8741,464.7263,157.3706,459.5556,155.0764,461.8499,149.9056,454.89,156.8741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c8a6999f871c54d0b084a37a392b45b8]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A2 STRUCTURE — one EventGroup and disjoint masks
rectangle "01 EventGroup\nEventBits_t value" as group
rectangle "02 READY mask\nA=0x01 B=0x02\nALL=0x03" as ready
rectangle "03 SYNC mask\nA=0x10 B=0x20 C=0x40\nALL=0x70" as sync
rectangle "04 coordinator p3\nwait ALL-ready\nsync C" as coordinator
rectangle "05 worker A p2\nset READY_A\nsync A" as a
rectangle "06 worker B p1\nset READY_B\nsync B" as b
ready - -> group
sync - -> group
coordinator - -> group
a - -> group
b - -> group
@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: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 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 participant topology
rectangle "01 coordinator p3\nBlocked: wait READY_ALL" as c
rectangle "02 worker A p2\nREADY_A then Blocked at barrier" as a
rectangle "03 worker B p1\nobserves partial mask\nsets final READY_B" as b
rectangle "04 coordinator\npreempts B\ncontributes SYNC_C" as cp
rectangle "05 worker B\ncontributes final SYNC_B" as bf
rectangle "06 verifier p0\nchecks masks, states, stacks, order" as v
c --> a
a --> b
b --> cp
cp --> bf
bf --> v
@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="684px" preserveAspectRatio="none" style="width:314px;height:684px;" version="1.1" viewBox="0 0 314 684" width="314px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="300" x="2" y="12.8281">A4 APPLICATION — deterministic participant topology</text><!--MD5=[8e9b2d9d80e066cced8e5d90e9bdea61]
entity c--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="159" x="66.5" y="24.5241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="99" x="76.5" y="47.3522">01 coordinator p3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="139" x="76.5" y="63.6963">Blocked: wait READY_ALL</text><!--MD5=[f83ae91a690dfc657e1c5fbbd818f13d]
entity a--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="202" x="45" y="137.2141"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="55" y="160.0422">02 worker A p2</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="182" x="55" y="176.3863">READY_A then Blocked at barrier</text><!--MD5=[5d12e840fb55afd9ed7b3559a638e8f7]
entity b--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="143" x="74.5" y="249.9041"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="84.5" y="272.7322">03 worker B p1</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="123" x="84.5" y="289.0763">observes partial mask</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="104" x="84.5" y="305.4204">sets final READY_B</text><!--MD5=[3fb52b275186d0d1b994a3e0dd6e0b1d]
entity cp--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="130" x="81" y="378.9341"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="82" x="91" y="401.7622">04 coordinator</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="91" y="418.1063">preempts B</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="110" x="91" y="434.4504">contributes SYNC_C</text><!--MD5=[0acb8bb9ab8c263869e5c765a8339d6d]
entity bf--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="157" x="67.5" y="507.9641"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="67" x="77.5" y="530.7922">05 worker B</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="137" x="77.5" y="547.1363">contributes final SYNC_B</text><!--MD5=[2d611726bd9fad7d9bb2742aefb86083]
entity v--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="215" x="38.5" y="620.6541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="48.5" y="643.4822">06 verifier p0</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="195" x="48.5" y="659.8263">checks masks, states, stacks, order</text><!--MD5=[a8ff9257ab4573c2754dbdb014fed1b7]
link c to a--><path d="M146,77.5441 C146,93.3341 146,113.6841 146,130.5241 " fill="none" id="c-&gt;a" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="146,135.5141,150,126.5141,146,130.5141,142,126.5141,146,135.5141" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a3deb68e4aebbeb113ddd128f6b25b58]
link a to b--><path d="M146,190.3541 C146,205.7941 146,225.7641 146,243.2341 " fill="none" id="a-&gt;b" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="146,248.0341,150,239.0341,146,243.0341,142,239.0341,146,248.0341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[77d5e6f0833fa1538205bb35295e9d86]
link b to cp--><path d="M146,319.1241 C146,335.4941 146,355.2741 146,372.4041 " fill="none" id="b-&gt;cp" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="146,377.0741,150,368.0741,146,372.0741,142,368.0741,146,377.0741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[4e46cb6f429b0543c8377a73d0548028]
link cp to bf--><path d="M146,448.1941 C146,464.9141 146,485.0041 146,501.4541 " fill="none" id="cp-&gt;bf" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="146,506.2941,150,497.2941,146,501.2941,142,497.2941,146,506.2941" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ebce72724ff6c0fd7b21478ef944ab23]
link bf to v--><path d="M146,560.9841 C146,576.7741 146,597.1341 146,613.9641 " fill="none" id="bf-&gt;v" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="146,618.9541,150,609.9541,146,613.9541,142,609.9541,146,618.9541" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a77b45e0f4e7a3417d1f9470e9577aa7]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A4 APPLICATION — deterministic participant topology
rectangle "01 coordinator p3\nBlocked: wait READY_ALL" as c
rectangle "02 worker A p2\nREADY_A then Blocked at barrier" as a
rectangle "03 worker B p1\nobserves partial mask\nsets final READY_B" as b
rectangle "04 coordinator\npreempts B\ncontributes SYNC_C" as cp
rectangle "05 worker B\ncontributes final SYNC_B" as bf
rectangle "06 verifier p0\nchecks masks, states, stacks, order" as v
c - -> a
a - -> b
b - -> cp
cp - -> bf
bf - -> v
@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.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

+29
View File
@@ -0,0 +1,29 @@
@startuml
scale 520 height
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 11
skinparam sequenceArrowColor #8095a1
skinparam sequenceLifeLineBorderColor #8095a1
title A5 FLOW — ALL-ready wait and reusable barrier
participant Coordinator as C
participant "Worker A" as A
participant "Worker B" as B
participant EventGroup as G
participant Verifier as V
C -> G : 02 wait READY_ALL; block
A -> G : 03 set READY_A
A -> G : 04 sync(SYNC_A); block
B -> B : 05 observe READY_A|SYNC_A; A Blocked
B -> G : set READY_B
G --> C : 06 READY_ALL; clear READY bits
C -> G : sync(SYNC_C); block
B -> B : 07 coordinator Blocked
B -> G : sync(SYNC_B) = final bit
G --> C : 08 SYNC_ALL
G --> A : 09 SYNC_ALL
G --> B : 10 SYNC_ALL; clear sync bits
B -> V : workers complete
V -> G : 11 final bits = 0; PASS
@enduml
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

+24
View File
@@ -0,0 +1,24 @@
@startuml
scale 700 height
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam stateBorderColor #2c7794
skinparam stateBackgroundColor #edf6fa
title A6 STATE — bit mask and blocked participants
[*] --> Zero : 01 0x00
Zero --> ReadyA : 03 set 0x01
ReadyA --> Partial : 04 sync A
Partial : bits 0x11
Partial : coordinator Blocked
Partial : worker A Blocked
Partial --> ReadyAll : set READY_B
ReadyAll : return 0x03 to coordinator
ReadyAll --> BarrierAC : clear READY; set SYNC_C
BarrierAC : bits 0x50
BarrierAC --> Release : 10 set SYNC_B
Release : all return 0x70
Release --> Zero : auto-clear sync mask
Zero --> [*] : 11 PASS
@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="700.5306px" preserveAspectRatio="none" style="width:311px;height:700px;" version="1.1" viewBox="0 0 311 700" width="311.4368px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="208.7031" x="54.1981" y="10.377">A6 STATE — bit mask and blocked participants</text><ellipse cx="148.4381" cy="27.4259" fill="#000000" rx="8.0893" ry="8.0893" style="stroke: none; stroke-width: 0.80892674767118;"/><rect fill="#EDF6FA" height="40.4463" rx="10.1116" ry="10.1116" style="stroke: #2C7794; stroke-width: 1.21339012150677;" width="40.4463" x="128.2149" y="98.6115"/><line style="stroke: #2C7794; stroke-width: 1.21339012150677;" x1="128.2149" x2="168.6612" y1="119.922" y2="119.922"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="21.0321" x="137.922" y="113.0331">Zero</text><rect fill="#EDF6FA" height="40.4463" rx="10.1116" ry="10.1116" style="stroke: #2C7794; stroke-width: 1.21339012150677;" width="50.1535" x="37.6151" y="202.1541"/><line style="stroke: #2C7794; stroke-width: 1.21339012150677;" x1="37.6151" x2="87.7686" y1="223.4646" y2="223.4646"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="33.9749" x="45.7044" y="216.5757">ReadyA</text><rect fill="#EDF6FA" height="69.0633" rx="10.1116" ry="10.1116" style="stroke: #2C7794; stroke-width: 1.21339012150677;" width="106.7783" x="11.7294" y="305.6967"/><line style="stroke: #2C7794; stroke-width: 1.21339012150677;" x1="11.7294" x2="118.5078" y1="327.0072" y2="327.0072"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="29.1214" x="50.5579" y="320.1184">Partial</text><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="40.4463" x="15.7741" y="341.4288">bits 0x11</text><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="90.5998" x="15.7741" y="354.65">coordinator Blocked</text><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="78.4659" x="15.7741" y="367.8712">worker A Blocked</text><rect fill="#EDF6FA" height="42.6209" rx="10.1116" ry="10.1116" style="stroke: #2C7794; stroke-width: 1.21339012150677;" width="135.0908" x="4.8536" y="437.8592"/><line style="stroke: #2C7794; stroke-width: 1.21339012150677;" x1="4.8536" x2="139.9443" y1="459.1697" y2="459.1697"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="38.8285" x="52.9847" y="452.2808">ReadyAll</text><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="118.9122" x="8.8982" y="473.5913">return 0x03 to coordinator</text><rect fill="#EDF6FA" height="42.6209" rx="10.1116" ry="10.1116" style="stroke: #2C7794; stroke-width: 1.21339012150677;" width="61.4784" x="65.9275" y="543.5697"/><line style="stroke: #2C7794; stroke-width: 1.21339012150677;" x1="65.9275" x2="127.406" y1="564.8802" y2="564.8802"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="45.2999" x="74.0168" y="557.9914">BarrierAC</text><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="40.4463" x="69.9722" y="579.3018">bits 0x50</text><rect fill="#EDF6FA" height="42.6209" rx="10.1116" ry="10.1116" style="stroke: #2C7794; stroke-width: 1.21339012150677;" width="81.7016" x="110.823" y="649.2884"/><line style="stroke: #2C7794; stroke-width: 1.21339012150677;" x1="110.823" x2="192.5246" y1="670.5988" y2="670.5988"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="35.5928" x="133.8774" y="663.71">Release</text><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="65.5231" x="114.8676" y="685.0205">all return 0x70</text><ellipse cx="148.4381" cy="222.3773" fill="none" rx="8.0893" ry="8.0893" style="stroke: #000000; stroke-width: 0.80892674767118;"/><ellipse cx="148.8425" cy="222.7818" fill="#000000" rx="4.8536" ry="4.8536" style="stroke: none; stroke-width: 0.80892674767118;"/><!--MD5=[87d9cf4c6d0571cc7324a3d075f0abf6]
link *start to Zero--><path d="M148.4381,35.8873 C148.4381,48.45 148.4381,73.9635 148.4381,93.2402 " fill="none" id="*start-&gt;Zero" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="148.4381,97.2687,151.6738,89.9883,148.4381,93.224,145.2024,89.9883,148.4381,97.2687" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="35.5928" x="149.247" y="70.9689">01 0x00</text><!--MD5=[55732aec1e2a47794d050241ccd2e55a]
link Zero to ReadyA--><path d="M127.8671,129.9979 C114.447,137.6422 97.4029,149.1532 86.1507,163.3256 C78.3365,173.1703 72.7953,185.9675 69.0743,197.0579 " fill="none" id="Zero-&gt;ReadyA" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="67.8609,200.8518,73.1686,194.9103,69.0982,197.001,67.0075,192.9306,67.8609,200.8518" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="51.7713" x="86.9596" y="174.5116">03 set 0x01</text><!--MD5=[96cfe76aef0f7ae8184f03260b75f3ae]
link ReadyA to Partial--><path d="M63.1044,242.8998 C63.4279,258.601 63.8971,281.0568 64.3016,300.3659 " fill="none" id="ReadyA-&gt;Partial" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="64.3825,304.2326,67.472,296.889,64.3016,300.1888,61.0018,297.0184,64.3825,304.2326" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="42.8731" x="64.7141" y="278.0542">04 sync A</text><!--MD5=[afa28759b07e46f56b550034c9ae1ff8]
link Partial to ReadyAll--><path d="M67.2218,374.9732 C68.3624,393.3682 69.7538,415.7431 70.8054,432.674 " fill="none" id="Partial-&gt;ReadyAll" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="71.048,436.5245,73.8193,429.055,70.7936,432.4878,67.3607,429.4621,71.048,436.5245" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="57.4338" x="70.2229" y="410.2166">set READY_B</text><!--MD5=[96308fad8f358abe029012e359ae41d0]
link ReadyAll to BarrierAC--><path d="M68.9691,480.6352 C67.7557,492.1948 67.416,506.7636 70.7811,519.3019 C72.5607,525.9351 75.5861,532.6088 78.9593,538.6919 " fill="none" id="ReadyAll-&gt;BarrierAC" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="80.9736,542.1703,80.1148,534.2497,78.9421,538.6729,74.5189,537.5001,80.9736,542.1703" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="112.4408" x="71.59" y="515.9272">clear READY; set SYNC_C</text><!--MD5=[6ffbc0b0eb025a8ea471f1b15e913e28]
link BarrierAC to Release--><path d="M102.2807,586.4024 C105.8804,598.1076 111.1061,612.8058 117.6988,625.0206 C121.4199,631.9207 126.1521,638.8937 130.8924,645.2195 " fill="none" id="BarrierAC-&gt;Release" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="133.0927,648.0993,131.2509,640.3481,130.6401,644.8831,126.1051,644.2723,133.0927,648.0993" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="65.5231" x="118.5078" y="621.6458">10 set SYNC_B</text><!--MD5=[2f70092d0c86b290121bbb14761f7a65]
link Release to Zero--><path d="M171.4763,648.9244 C177.4623,641.7654 183.6183,633.4334 188.0755,625.0206 C200.9617,600.6962 205.8719,593.2217 205.8719,565.6939 C205.8719,221.5684 205.8719,221.5684 205.8719,221.5684 C205.8719,194.5017 201.447,186.8573 188.0755,163.3256 C183.8852,155.9482 178.2551,148.7811 172.5603,142.4472 " fill="none" id="Release-&gt;Zero" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="169.8503,139.5189,172.4072,147.0645,172.5923,142.4923,177.1645,142.6774,169.8503,139.5189" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="95.4534" x="206.6808" y="410.2166">auto-clear sync mask</text><!--MD5=[1b6f9b11724576e6164d4aba9cf0074a]
link Zero to *end--><path d="M146.9415,139.3167 C146.2459,150.6012 145.6554,165.0406 146.0113,177.8863 C146.3025,188.3457 146.982,200.2046 147.5482,208.9248 " fill="none" id="Zero-&gt;*end" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><polygon fill="#A80036" points="147.8152,212.929,150.5665,205.4522,147.55,208.8931,144.109,205.8765,147.8152,212.929" style="stroke: #A80036; stroke-width: 0.80892674767118;"/><text fill="#000000" font-family="Monospace" font-size="9.7071" lengthAdjust="spacingAndGlyphs" textLength="37.2106" x="146.8202" y="174.5116">11 PASS</text><!--MD5=[2cea5ce2bf49dfaef6d24b304909bc16]
@startuml
scale 700 height
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam stateBorderColor #2c7794
skinparam stateBackgroundColor #edf6fa
title A6 STATE — bit mask and blocked participants
[*] - -> Zero : 01 0x00
Zero - -> ReadyA : 03 set 0x01
ReadyA - -> Partial : 04 sync A
Partial : bits 0x11
Partial : coordinator Blocked
Partial : worker A Blocked
Partial - -> ReadyAll : set READY_B
ReadyAll : return 0x03 to coordinator
ReadyAll - -> BarrierAC : clear READY; set SYNC_C
BarrierAC : bits 0x50
BarrierAC - -> Release : 10 set SYNC_B
Release : all return 0x70
Release - -> Zero : auto-clear sync mask
Zero - -> [*] : 11 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: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 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 — event value, wait lists and task stacks
rectangle "01 g_fc09.group\nreal EventGroup handle" as group
rectangle "02 event value\n0x00 → 0x01 → 0x11\n→ 0x70 → 0x00" as bits
rectangle "03 coordinator TCB/stack\nwait mask 0x03\nthen 0x70" as c
rectangle "04 worker A TCB/stack\nbarrier waiter" as a
rectangle "05 worker B TCB/stack\nfinal bit setter" as b
rectangle "06 g_fc09_events[11]\ncommit-last records\ndigest 2391788d" as log
group --> bits
group --> c
group --> a
group --> b
c --> log
a --> log
b --> 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="346px" preserveAspectRatio="none" style="width:708px;height:346px;" version="1.1" viewBox="0 0 708 346" width="708px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="296" x="210" y="12.8281">A7 RUNTIME — event value, wait lists and task stacks</text><!--MD5=[1d1cacbd73a0126b771be7b0c6d45549]
entity group--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="152" x="272.5" y="24.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="89" x="282.5" y="47.4222">01 g_fc09.group</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="282.5" y="63.7663">real EventGroup handle</text><!--MD5=[dbf1c5340e3c6dc08db3ffddcb8b49cb]
entity bits--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="133" x="6" y="137.2841"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="81" x="16" y="160.1122">02 event value</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="113" x="16" y="176.4563">0x00 → 0x01 → 0x11</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="83" x="16" y="192.8004">→ 0x70 → 0x00</text><!--MD5=[8e9b2d9d80e066cced8e5d90e9bdea61]
entity c--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="161" x="174" y="137.2841"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="141" x="184" y="160.1122">03 coordinator TCB/stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="184" y="176.4563">wait mask 0x03</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="184" y="192.8004">then 0x70</text><!--MD5=[f83ae91a690dfc657e1c5fbbd818f13d]
entity a--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="146" x="370.5" y="145.4541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="126" x="380.5" y="168.2822">04 worker A TCB/stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="380.5" y="184.6263">barrier waiter</text><!--MD5=[5d12e840fb55afd9ed7b3559a638e8f7]
entity b--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="146" x="551.5" y="145.4541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="126" x="561.5" y="168.2822">05 worker B TCB/stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="561.5" y="184.6263">final bit setter</text><!--MD5=[30ba7fb1050e29c0f3290b9e87c281e8]
entity log--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="137" x="375" y="266.3141"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="385" y="289.1422">06 g_fc09_events[11]</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="385" y="305.4863">commit-last records</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="385" y="321.8304">digest 2391788d</text><!--MD5=[82d03b499750959605442fda57c01de4]
link group to bits--><path d="M288.61,77.7241 C246.43,95.8941 189.73,120.3041 144.99,139.5741 " fill="none" id="group-&gt;bits" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="140.43,141.5441,150.2783,141.6496,145.0205,139.5625,147.1077,134.3047,140.43,141.5441" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c4bc7ca03ebb45a4666427588006195c]
link group to c--><path d="M328.1,77.7241 C315.57,93.5741 299.27,114.1941 285.19,131.9841 " fill="none" id="group-&gt;c" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="282.22,135.7441,290.9352,131.1567,285.3173,131.819,284.655,126.201,282.22,135.7441" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2243c483f5f9c53893d238d3c7dd5226]
link group to a--><path d="M369.11,77.7241 C383.8,96.1041 403.61,120.8841 419.09,140.2541 " fill="none" id="group-&gt;a" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="421.98,143.8741,419.4855,134.3464,418.8583,139.9684,413.2363,139.3412,421.98,143.8741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1e8881a371b0cd460c980830ca7b9782]
link group to b--><path d="M408.39,77.7241 C452.78,96.8441 513.26,122.8941 558.95,142.5641 " fill="none" id="group-&gt;b" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="563.34,144.4541,556.6705,137.2072,558.7517,142.4673,553.4916,144.5485,563.34,144.4541" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[69077f4412a504b889568106a8235771]
link c to log--><path d="M304.65,206.5041 C330.28,223.7341 361.54,244.7441 387.91,262.4641 " fill="none" id="c-&gt;log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="391.86,265.1141,386.6101,256.7811,387.7063,262.3307,382.1567,263.427,391.86,265.1141" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1d09c80a4ef794db0387b82dfe39d650]
link a to log--><path d="M443.5,198.5041 C443.5,216.0341 443.5,239.6141 443.5,259.6041 " fill="none" id="a-&gt;log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="443.5,264.4541,447.5,255.4541,443.5,259.4541,439.5,255.4541,443.5,264.4541" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[71b2fcac979d99c7810e4f91b6635a71]
link b to log--><path d="M587.87,198.5041 C561.7,216.8741 526.08,241.8641 496.77,262.4441 " fill="none" id="b-&gt;log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="492.99,265.0941,502.6565,263.2076,497.0855,262.2258,498.0673,256.6548,492.99,265.0941" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0fa5eeee0b44f50c50faec811c74003d]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A7 RUNTIME — event value, wait lists and task stacks
rectangle "01 g_fc09.group\nreal EventGroup handle" as group
rectangle "02 event value\n0x00 → 0x01 → 0x11\n→ 0x70 → 0x00" as bits
rectangle "03 coordinator TCB/stack\nwait mask 0x03\nthen 0x70" as c
rectangle "04 worker A TCB/stack\nbarrier waiter" as a
rectangle "05 worker B TCB/stack\nfinal bit setter" as b
rectangle "06 g_fc09_events[11]\ncommit-last records\ndigest 2391788d" as log
group - -> bits
group - -> c
group - -> a
group - -> b
c - -> log
a - -> log
b - -> 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: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 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 — event latch and reusable barrier
rectangle "01 ANY wait\nrelease on first selected bit" as any
rectangle "02 ALL wait\nrelease on complete mask" as all
rectangle "03 clear-on-exit\nconsume readiness epoch" as clear
rectangle "04 xEventGroupSync\nset own bit + wait ALL\nautomatic barrier clear" as barrier
any -[hidden]right- all
all --> clear
clear --> barrier
note bottom of barrier
FC09 uses disjoint READY and SYNC masks.
Reserved control bits are never selected.
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="433px" preserveAspectRatio="none" style="width:438px;height:433px;" version="1.1" viewBox="0 0 438 433" width="438px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="274" x="85.5" y="12.8281">A8 PATTERNS — event latch and reusable barrier</text><!--MD5=[0db9dde077dbaaf3e8af1b8cdc181c2f]
entity any--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="171" x="6" y="24.2441"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="67" x="16" y="47.0722">01 ANY wait</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="151" x="16" y="63.4163">release on first selected bit</text><!--MD5=[966c1203244200a41ac5fc270e79b5ef]
entity all--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="167" x="212" y="24.2441"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="63" x="222" y="47.0722">02 ALL wait</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="222" y="63.4163">release on complete mask</text><!--MD5=[956c9f402de1d86fc9645178081f5a24]
entity clear--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="166" x="212.5" y="136.9341"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="222.5" y="159.7622">03 clear-on-exit</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="146" x="222.5" y="176.1063">consume readiness epoch</text><!--MD5=[0bdcf6b5a9770ac8afdf4cf8b158da40]
entity barrier--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="149" x="221" y="249.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="231" y="272.4522">04 xEventGroupSync</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="231" y="288.7963">set own bit + wait ALL</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="129" x="231" y="305.1404">automatic barrier clear</text><path d="M164.5,378.6541 L164.5,421.3423 A0,0 0 0 0 164.5,421.3423 L426.5,421.3423 A0,0 0 0 0 426.5,421.3423 L426.5,388.6541 L416.5,378.6541 L299.5,378.6541 L295.5,318.9941 L291.5,378.6541 L164.5,378.6541 A0,0 0 0 0 164.5,378.6541 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M416.5,378.6541 L416.5,388.6541 L426.5,388.6541 L416.5,378.6541 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="241" x="170.5" y="396.4822">FC09 uses disjoint READY and SYNC masks.</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="227" x="170.5" y="412.8263">Reserved control bits are never selected.</text><!--MD5=[d132f1b209af19f2d2b9e26fae080b1d]
link any to all--><!--MD5=[d40df84129d43b2c6afa9f2885efc180]
link all to clear--><path d="M295.5,77.2641 C295.5,93.0541 295.5,113.4141 295.5,130.2441 " fill="none" id="all-&gt;clear" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="295.5,135.2341,299.5,126.2341,295.5,130.2341,291.5,126.2341,295.5,135.2341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[794eefcd8acf29795a81a765e6e3ea74]
link clear to barrier--><path d="M295.5,190.0741 C295.5,205.5141 295.5,225.4841 295.5,242.9541 " fill="none" id="clear-&gt;barrier" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="295.5,247.7541,299.5,238.7541,295.5,242.7541,291.5,238.7541,295.5,247.7541" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8cc7b0a3ac74499112969d1160c9143c]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A8 PATTERNS — event latch and reusable barrier
rectangle "01 ANY wait\nrelease on first selected bit" as any
rectangle "02 ALL wait\nrelease on complete mask" as all
rectangle "03 clear-on-exit\nconsume readiness epoch" as clear
rectangle "04 xEventGroupSync\nset own bit + wait ALL\nautomatic barrier clear" as barrier
any -[hidden]right- all
all - -> clear
clear - -> barrier
note bottom of barrier
FC09 uses disjoint READY and SYNC masks.
Reserved control bits are never selected.
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