feat: publish FreeRTOS C FC09 card
|
After Width: | Height: | Size: 20 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 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
|
||||
@@ -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->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->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->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->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->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 |
|
After Width: | Height: | Size: 22 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 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
|
||||
@@ -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->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->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->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->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->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 |
|
After Width: | Height: | Size: 37 KiB |
@@ -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
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 30 KiB |
@@ -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
|
||||
@@ -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->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->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->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->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->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->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->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->*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 |
|
After Width: | Height: | Size: 24 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 — 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
|
||||
@@ -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->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->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->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->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->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->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->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 |
|
After Width: | Height: | Size: 17 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 — 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
|
||||
@@ -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->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->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 |
@@ -0,0 +1,21 @@
|
||||
# FC09 card plan — Event Groups
|
||||
|
||||
## Thesis
|
||||
|
||||
An EventGroup is a bit protocol, not a counter. ALL/ANY, clear-on-exit and
|
||||
barrier auto-clear are part of the protocol and must be visible in evidence.
|
||||
|
||||
```text
|
||||
FC09 · Event Groups
|
||||
└── Task01 · READY latch + three-party barrier
|
||||
├── A2/A4 · disjoint masks and participants
|
||||
├── A5 · E01–E11 deterministic flow
|
||||
├── A6 · bit value and blocked-task states
|
||||
├── A7 · handle, wait lists, three stacks and digest
|
||||
├── A8 · ANY/ALL/clear/sync decisions
|
||||
└── Exercise · compare ANY and ALL on the same trace
|
||||
```
|
||||
|
||||
Acceptance requires a real EventGroup, finite timeouts, coordinator blocked on
|
||||
the partial READY mask, worker A blocked at sync, all three `xEventGroupSync`
|
||||
results containing `0x70`, final bits zero and deterministic E01–E11.
|
||||
@@ -0,0 +1,333 @@
|
||||
% Generated from json/card_source.json by tools/render_card.py.
|
||||
% Do not edit manually; update the JSON and regenerate.
|
||||
|
||||
\documentclass[12pt,a4paper]{article}
|
||||
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{lmodern}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[polish]{babel}
|
||||
\usepackage{csquotes}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{xcolor}
|
||||
\usepackage[a4paper,left=2.15cm,right=2.15cm,top=0.5cm,bottom=0.5cm,headheight=24mm,headsep=3mm,includehead]{geometry}
|
||||
\usepackage{eso-pic}
|
||||
\usepackage{marginnote}
|
||||
\usepackage{array}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{pdflscape}
|
||||
\usepackage{float}
|
||||
\usepackage{silence}
|
||||
\WarningFilter{soulutf8}{This package is obsolete}
|
||||
\usepackage{pdfcomment}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{needspace}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{microtype}
|
||||
\usepackage[most]{tcolorbox}
|
||||
\usepackage{qrcode}
|
||||
\IfFileExists{references.bib}{%
|
||||
\usepackage[backend=biber,style=numeric,sorting=none]{biblatex}%
|
||||
\addbibresource{references.bib}%
|
||||
}{}
|
||||
|
||||
\hypersetup{hidelinks}
|
||||
|
||||
\IfFileExists{build-meta.tex}{%
|
||||
\input{build-meta.tex}%
|
||||
}{%
|
||||
\newcommand{\BuildCommit}{lokalna}%
|
||||
}
|
||||
|
||||
\newcommand{\DocumentAuthor}{M. Pabiszczak}
|
||||
\newcommand{\DocumentYear}{2026}
|
||||
\newcommand{\CardSeries}{freertos-c}
|
||||
\newcommand{\CardNumber}{09}
|
||||
\newcommand{\CardCount}{15}
|
||||
\newcommand{\CardSlug}{event-groups}
|
||||
\newcommand{\CardVersion}{v00.01}
|
||||
\newcommand{\DocumentUUID}{e5c4c0f3-3dd0-5168-9945-14d48744ec6f}
|
||||
|
||||
\newcommand{\EmptyCheck}{\(\square\)}
|
||||
\newcommand{\EscAnswerLines}[1][3]{\par\noindent\dotfill\par\noindent\dotfill\par\noindent\dotfill}
|
||||
\newcommand{\EscWriteRow}[1][2.8em]{\rule{0pt}{#1}}
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{0.45em}
|
||||
\setlength{\headheight}{24mm}
|
||||
\setlength{\headsep}{3mm}
|
||||
\setlength{\footskip}{8mm}
|
||||
\setlength{\marginparwidth}{1.5cm}
|
||||
\setlength{\marginparsep}{0.25cm}
|
||||
\renewcommand{\arraystretch}{1.22}
|
||||
% Margin separator lines disabled for layout trial.
|
||||
|
||||
\newcommand{\ESCPageResourceHeader}{%
|
||||
\begingroup%
|
||||
\setlength{\parskip}{0pt}%
|
||||
\setlength{\fboxsep}{0pt}%
|
||||
\setlength{\fboxrule}{0.35pt}%
|
||||
\setlength{\arrayrulewidth}{0.35pt}%
|
||||
\noindent\fbox{%
|
||||
\begin{minipage}[c][23.5mm][c]{\dimexpr\textwidth-2\fboxrule\relax}%
|
||||
\begin{minipage}[c][23mm][c]{24mm}\centering%
|
||||
\qrcode[level=L,height=22mm]{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-c-event-groups}%
|
||||
\end{minipage}%
|
||||
\vrule width0.35pt%
|
||||
\begin{minipage}[c][23mm][c]{\dimexpr\linewidth-48mm-0.7pt\relax}%
|
||||
\setlength{\tabcolsep}{0pt}%
|
||||
\renewcommand{\arraystretch}{0}%
|
||||
\begin{tabularx}{\linewidth}{@{}p{\dimexpr0.50000000\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.15126050\linewidth-\arrayrulewidth\relax}|X@{}}%
|
||||
\parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries TITLE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{7.7}{7.9}\selectfont\ttfamily\bfseries Event Groups: ALL-ready i bariera}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries VER.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.6}{6.8}\selectfont\ttfamily\bfseries v00.01}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries DATETIME}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries 2026-07-19T00:00:00+02:00}\hspace{0.45mm}}\par} \\%
|
||||
\end{tabularx}%
|
||||
\par\nointerlineskip%
|
||||
\hrule height0.35pt%
|
||||
\nointerlineskip%
|
||||
\begin{tabularx}{\linewidth}{@{}p{\dimexpr0.50000000\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.25210084\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.14285714\linewidth-\arrayrulewidth\relax}|X@{}}%
|
||||
\parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries PROJECT}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{7.7}{7.9}\selectfont\ttfamily\bfseries Freestanding C nad FreeRTOS}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries SERIES}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries FreeRTOS C}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries CARD}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries 09/15}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries SHEET}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries \thepage/\pageref{LastPage}}\hspace{0.45mm}}\par} \\%
|
||||
\end{tabularx}%
|
||||
\par\nointerlineskip%
|
||||
\hrule height0.35pt%
|
||||
\nointerlineskip%
|
||||
\begin{tabularx}{\linewidth}{@{}p{\dimexpr0.05882353\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.05042017\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.14705882\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.09243697\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.07563025\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.07563025\linewidth-\arrayrulewidth\relax}|X@{}}%
|
||||
\parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries SUBJ.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries Inf.}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries PROG.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries CORE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries SCOPE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries LEVEL}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries POS.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hbox to\linewidth{\hspace{0.35mm}{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries GITEA UUID}\hfill{\fontsize{3.4}{3.75}\selectfont\ttfamily e5c4c0f3-3dd0-5168-9945-14d48744ec6f}\hspace{0.35mm}}\par\nointerlineskip\hbox to\linewidth{\hspace{0.35mm}{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries CARD UUID} {\fontsize{3.4}{3.75}\selectfont\ttfamily 3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f}\hfill{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries AUTHOR M. Pabiszczak}\hspace{0.35mm}}} \\%
|
||||
\end{tabularx}%
|
||||
\par\nointerlineskip%
|
||||
\hrule height0.35pt%
|
||||
\nointerlineskip%
|
||||
\begin{tabularx}{\linewidth}{@{}X@{}}%
|
||||
\parbox[c][3.46276mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{4.5}{4.85}\selectfont\ttfamily\bfseries GITEA} {\fontsize{4.5}{4.85}\selectfont\ttfamily\href{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-c-event-groups}{\nolinkurl{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-c-event-groups}}}} \\%
|
||||
\end{tabularx}%
|
||||
\par\nointerlineskip%
|
||||
\hrule height0.35pt%
|
||||
\nointerlineskip%
|
||||
\begin{tabularx}{\linewidth}{@{}X@{}}%
|
||||
\parbox[c][3.46276mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{4.5}{4.85}\selectfont\ttfamily\bfseries HTML} {\fontsize{4.5}{4.85}\selectfont\ttfamily\href{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f}{\nolinkurl{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f}}}} \\%
|
||||
\end{tabularx}%
|
||||
\end{minipage}%
|
||||
\vrule width0.35pt%
|
||||
\begin{minipage}[c][23mm][c]{24mm}\centering%
|
||||
\qrcode[level=L,height=22mm]{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f}%
|
||||
\end{minipage}%
|
||||
\end{minipage}%
|
||||
}%
|
||||
\endgroup%
|
||||
}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\fancyhf{}
|
||||
\fancyhead[C]{\ESCPageResourceHeader}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0pt}
|
||||
|
||||
\newcommand{\ESCMarginTag}[4]{%
|
||||
\hspace*{#1}\textcolor{#2}{#3~#4}%
|
||||
}
|
||||
\newcommand{\ESCSectionBlockStart}{%
|
||||
\Needspace{8\baselineskip}%
|
||||
\par\vspace{0.35em}%
|
||||
\noindent\textcolor{black!28}{\rule{\textwidth}{0.35pt}}%
|
||||
\par\vspace{0.15em}%
|
||||
}
|
||||
\newcommand{\ESCSectionBlockEnd}{%
|
||||
\par\vspace{0.25em}%
|
||||
\noindent\textcolor{black!18}{\rule{\textwidth}{0.25pt}}%
|
||||
\par\vspace{0.45em}%
|
||||
}
|
||||
\newcommand{\ESCTinyStepSeparator}{%
|
||||
\par\vspace{0.10em}%
|
||||
\noindent{\color{black!18}\leaders\hbox{\rule{0.60em}{0.22pt}\hspace{0.38em}}\hfill\kern0pt}%
|
||||
\par\vspace{0.10em}%
|
||||
}
|
||||
\newtcolorbox{ESCTaskFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black,boxsep=0pt,left=1.4mm,right=1.4mm,top=0.8mm,bottom=0.8mm,colbacktitle=black!7,coltitle=black,title={\ttfamily\bfseries TASK\quad #1}}
|
||||
\newtcolorbox{ESCBlockFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black!55,boxsep=0pt,left=1.0mm,right=1.0mm,top=0.6mm,bottom=0.6mm,colbacktitle=black!4,coltitle=black,title={\ttfamily\bfseries BLOCK\quad #1}}
|
||||
\newtcolorbox{ESCStepFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black!28,boxsep=0pt,left=0.8mm,right=0.8mm,top=0.45mm,bottom=0.45mm,colbacktitle=black!2,coltitle=black,title={\ttfamily STEP\quad #1}}
|
||||
\newtcolorbox{ESCConclusionFrame}{enhanced,breakable,arc=0pt,boxrule=0.45pt,colback=blue!2,colframe=blue!45!black,boxsep=0pt,left=1.2mm,right=1.2mm,top=0.7mm,bottom=0.7mm,colbacktitle=blue!7,coltitle=black,title={\ttfamily\bfseries WNIOSEK}}
|
||||
|
||||
\newcommand{\ESCLearningTreeWidget}{%
|
||||
\reversemarginpar
|
||||
\marginnote[%
|
||||
\begin{minipage}{\marginparwidth}%
|
||||
\raggedright
|
||||
{\fontsize{3.55}{3.95}\selectfont\ttfamily
|
||||
\begin{minipage}[t]{\marginparwidth}%
|
||||
\raggedright
|
||||
{\bfseries\textcolor{black!65}{TECH}\par}%
|
||||
\vspace{0.08em}%
|
||||
\hspace*{0.00em}\textcolor{red}{WE~01}\textcolor{black!48}{}\par%
|
||||
\hspace*{0.28em}\textcolor{orange!85!black}{EK~LOCAL~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.09}{Uczeń pokazuje maskę częściową, dwa Blocked states, trzy wyniki 0x70, final zero, trzy SP i\textCR digest.}}\par%
|
||||
\hspace*{0.54em}\textcolor{blue!70!black}{KW~LOCAL~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.09}{Łączy kod, diagram i zweryfikowany dowód.}}\par%
|
||||
\end{minipage}%
|
||||
}%
|
||||
\end{minipage}%
|
||||
]{}
|
||||
\normalmarginpar
|
||||
|
||||
\marginnote{%
|
||||
\begin{minipage}{\marginparwidth}%
|
||||
\raggedright
|
||||
{\fontsize{3.55}{3.95}\selectfont\ttfamily
|
||||
\hspace*{0.06cm}%
|
||||
\begin{minipage}[t]{\dimexpr\marginparwidth-0.06cm\relax}%
|
||||
\raggedright
|
||||
{\bfseries\textcolor{black!65}{OG}\par}%
|
||||
\vspace{0.08em}%
|
||||
\hspace*{0.00em}\textcolor{red}{WE~01}\textcolor{black!48}{}\par%
|
||||
\hspace*{0.28em}\textcolor{green!50!black}{EN~LOCAL~EN~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.09}{Uczeń przypisuje właściciela i znaczenie każdemu bitowi oraz rozdziela wait ALL od barrier\textCR sync.}}\par%
|
||||
\hspace*{0.54em}\textcolor{blue!70!black}{KW~LOCAL~KW~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.09}{Łączy kod, diagram i zweryfikowany dowód.}}\par%
|
||||
\end{minipage}%
|
||||
}%
|
||||
\end{minipage}%
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
\sloppy
|
||||
|
||||
\vspace{1.0em}
|
||||
\noindent{\Large\bfseries Cel karty}\par
|
||||
\vspace{0.35em}
|
||||
Uczeń projektuje rozłączne maski EventGroup i dowodzi różnicy między oczekiwaniem ALL a trzyosobową barierą.
|
||||
|
||||
\vspace{0.8em}
|
||||
\noindent\textcolor{black!25}{\rule{\textwidth}{0.35pt}}
|
||||
\vspace{0.7em}
|
||||
\noindent{\Large\bfseries Zakres karty}\par
|
||||
\vspace{0.35em}
|
||||
Koordynator p3 blokuje się na READY_ALL. Worker A ustawia READY_A i blokuje się w xEventGroupSync. Worker B potwierdza maskę częściową, ustawia READY_B, po czym koordynator wnosi SYNC_C. Ostatni SYNC_B zwalnia wszystkich; każdy wynik zawiera 0x70, a automatycznie wyczyszczona grupa kończy z 0.
|
||||
\vspace{0.55em}
|
||||
\small\begin{tabularx}{\textwidth}{@{}>{\ttfamily\raggedright\arraybackslash}p{0.85cm}>{\ttfamily\raggedright\arraybackslash}p{1.45cm}X>{\raggedright\arraybackslash}p{2.45cm}>{\raggedright\arraybackslash}p{1.75cm}>{\ttfamily\raggedright\arraybackslash}p{1.50cm}@{}}
|
||||
\textbf{Lekcja} & \textbf{Task} & \textbf{Najważniejsza idea} & \textbf{Priorytet} & \textbf{Status} & \textbf{Version} \\ \hline
|
||||
\hline
|
||||
\multicolumn{1}{|l|}{\textbf{\texttt{FC09}}} & \multicolumn{1}{l|}{\textbf{\texttt{Task01}}} & \multicolumn{1}{l|}{\textbf{bit masks, wait semantics, automatic clear i xEventGroupSync}} & \multicolumn{1}{l|}{\textbf{główny}} & \multicolumn{1}{l|}{\textbf{opracowane}} & \multicolumn{1}{l|}{\textbf{\texttt{v00.01}}} \\ \hline
|
||||
\end{tabularx}
|
||||
\normalsize
|
||||
|
||||
|
||||
\vspace{0.8em}
|
||||
\noindent\textcolor{black!25}{\rule{\textwidth}{0.35pt}}
|
||||
|
||||
\clearpage
|
||||
|
||||
\begin{landscape}
|
||||
\ESCSectionBlockStart
|
||||
\noindent{\small\bfseries A2 — Structure \hfill część 1/1 \textperiodcentered\ r1 c1}\par
|
||||
\vspace{0.35em}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.79149\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a2-structure.png}}
|
||||
\caption{A2 STRUCTURE — READY and SYNC masks. — część 1/1 (r1 c1).}
|
||||
\label{fig:a2-structure}
|
||||
\end{figure}
|
||||
\ESCSectionBlockEnd
|
||||
\end{landscape}
|
||||
|
||||
\clearpage
|
||||
\ESCSectionBlockStart
|
||||
\noindent{\small\bfseries A4 — Application \hfill część 1/1 \textperiodcentered\ r1 c1}\par
|
||||
\vspace{0.35em}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.47576\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a4-application.png}}
|
||||
\caption{A4 APPLICATION — deterministic release topology. — część 1/1 (r1 c1).}
|
||||
\label{fig:a4-application}
|
||||
\end{figure}
|
||||
\ESCSectionBlockEnd
|
||||
|
||||
\clearpage
|
||||
\begin{landscape}
|
||||
\ESCSectionBlockStart
|
||||
\noindent{\small\bfseries A5 — Flow \hfill część 1/1 \textperiodcentered\ r1 c1}\par
|
||||
\vspace{0.35em}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.60851\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a5-flow.png}}
|
||||
\caption{A5 FLOW — ALL-ready followed by xEventGroupSync. — część 1/1 (r1 c1).}
|
||||
\label{fig:a5-flow}
|
||||
\end{figure}
|
||||
\ESCSectionBlockEnd
|
||||
\end{landscape}
|
||||
|
||||
\clearpage
|
||||
\ESCSectionBlockStart
|
||||
\noindent{\small\bfseries A6 — State \hfill część 1/1 \textperiodcentered\ r1 c1}\par
|
||||
\vspace{0.35em}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.47121\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a6-state.png}}
|
||||
\caption{A6 STATE — zero, partial, ready and barrier release. — część 1/1 (r1 c1).}
|
||||
\label{fig:a6-state}
|
||||
\end{figure}
|
||||
\ESCSectionBlockEnd
|
||||
|
||||
\clearpage
|
||||
\begin{landscape}
|
||||
\ESCSectionBlockStart
|
||||
\noindent{\small\bfseries A7 — Runtime \hfill część 1/1 \textperiodcentered\ r1 c1}\par
|
||||
\vspace{0.35em}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.75319\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a7-runtime.png}}
|
||||
\caption{A7 RUNTIME — event value and waiting TCBs. — część 1/1 (r1 c1).}
|
||||
\label{fig:a7-runtime}
|
||||
\end{figure}
|
||||
\ESCSectionBlockEnd
|
||||
\end{landscape}
|
||||
|
||||
\clearpage
|
||||
\begin{landscape}
|
||||
\ESCSectionBlockStart
|
||||
\noindent{\small\bfseries A8 — Patterns \hfill część 1/1 \textperiodcentered\ r1 c1}\par
|
||||
\vspace{0.35em}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.46596\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a8-patterns.png}}
|
||||
\caption{A8 PATTERNS — ANY, ALL, consume and barrier. — część 1/1 (r1 c1).}
|
||||
\label{fig:a8-patterns}
|
||||
\end{figure}
|
||||
\ESCSectionBlockEnd
|
||||
\end{landscape}
|
||||
|
||||
\clearpage
|
||||
\ESCSectionBlockStart
|
||||
\section{Task01 — EventGroup}
|
||||
|
||||
\begin{ESCTaskFrame}{TASK01 · ALL-ready i trzyosobowa bariera}
|
||||
{\scriptsize\ttfamily 3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f}\par
|
||||
\begin{ESCBlockFrame}{A — mask table}
|
||||
Przypisz READY i SYNC do właścicieli.
|
||||
\begin{ESCStepFrame}{partial · Przewidź 0x11.}
|
||||
Wskaż, które taski muszą być Blocked.
|
||||
\end{ESCStepFrame}
|
||||
\begin{ESCStepFrame}{clear · Przewidź final zero.}
|
||||
Rozdziel clear-on-exit od barrier auto-clear.
|
||||
\end{ESCStepFrame}
|
||||
\end{ESCBlockFrame}
|
||||
\begin{ESCBlockFrame}{B — replay Hazard3}
|
||||
RUN zaczyna się od czystej RAM.
|
||||
\begin{ESCStepFrame}{ready · Zbadaj E02–E06.}
|
||||
Porównaj maski i task states.
|
||||
\end{ESCStepFrame}
|
||||
\begin{ESCStepFrame}{barrier · Zbadaj E07–E10.}
|
||||
Porównaj trzy wartości zwrotne.
|
||||
\end{ESCStepFrame}
|
||||
\begin{ESCStepFrame}{pass · Zbadaj E11.}
|
||||
Zapisz final bits, SP, PASS i digest.
|
||||
\end{ESCStepFrame}
|
||||
\end{ESCBlockFrame}
|
||||
\begin{ESCBlockFrame}{Ćwiczenie · Ćwiczenie — ANY kontra ALL}
|
||||
Uruchom kontrolowany wariant wait ANY na tej samej sekwencji READY_A/READY_B. Zachowaj osobne maski i porównaj moment release oraz wartość zwrotną.
|
||||
\par\textbf{Evidence:} Dwa timestampowane ślady i tabela semantyki clear-on-exit.
|
||||
\par\textbf{Acceptance:} Uczeń nie przypisuje API gwarancji kolejności równorzędnych waiterów.
|
||||
\end{ESCBlockFrame}
|
||||
\tcblower\textbf{Task acceptance:} PASS; partial=0x11; READY result contains 0x03; all SYNC results contain 0x70; final=0; deterministic digest.
|
||||
\end{ESCTaskFrame}
|
||||
\begin{ESCConclusionFrame}
|
||||
EventGroup przechowuje bity stanu protokołu, nie historię zdarzeń. Rozłączne maski i jawne reguły clear są warunkiem poprawnej synchronizacji.
|
||||
\end{ESCConclusionFrame}
|
||||
\ESCSectionBlockEnd
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,12 @@
|
||||
# FC09 page layout
|
||||
|
||||
1. Goal, mask table, prediction and acceptance criterion.
|
||||
2. A2 STRUCTURE — landscape.
|
||||
3. A4 APPLICATION — portrait.
|
||||
4. A5 FLOW — landscape.
|
||||
5. A6 STATE — portrait.
|
||||
6. A7 RUNTIME — landscape.
|
||||
7. A8 PATTERNS and exercise — landscape.
|
||||
|
||||
Every diagram starts on a new page. RUN replays from clean RAM; CODE only
|
||||
selects source or the protocol table.
|
||||