feat: publish FreeRTOS C FC05 card

This commit is contained in:
2026-07-19 16:36:02 +02:00
commit 3f151c823d
194 changed files with 59220 additions and 0 deletions
+1
View File
File diff suppressed because one or more lines are too long
+61
View File
File diff suppressed because one or more lines are too long
+3803
View File
File diff suppressed because one or more lines are too long
+38
View File
@@ -0,0 +1,38 @@
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam ArrowColor #8295a0
skinparam classBorderColor #2b6f8e
skinparam classBackgroundColor #edf6fa
skinparam classFontColor #183f53
skinparam roundcorner 10
top to bottom direction
title A2 STRUCTURE — queue length 1 and three task contexts
class "01 QueueMessage" as Message {
sequence : uint32_t
payload : uint32_t
checksum : uint32_t
}
class "02 Queue<1 × QueueMessage>" as Queue <<FreeRTOS object>> {
uxLength = 1
uxItemSize = 12
waiting : List_t
}
class "03 receiver" as Receiver <<task p3>>
class "04 sender" as Sender <<task p2>>
class "05 verifier" as Verifier <<task p1>>
class "06 bounded evidence[12]" as Evidence
Sender -down-> Queue : xQueueSend copies bytes
Queue -down-> Receiver : xQueueReceive copies bytes
Receiver ..> Message
Sender ..> Message
Receiver --> Evidence : publish
Sender --> Evidence : publish
Verifier --> Evidence : digest
Verifier ..> Queue : verifies FIFO / states
@enduml
+64
View File
@@ -0,0 +1,64 @@
<?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="520.7909px" preserveAspectRatio="none" style="width:705px;height:520px;" version="1.1" viewBox="0 0 705 520" width="705.0287px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="386.7169" x="118.5689" y="11.0058">A2 STRUCTURE — queue length 1 and three task contexts</text><!--MD5=[bea5b0d46523efab5ea1c1d339f396f0]
class Message--><rect fill="#EDF6FA" height="83.3616" id="Message" rx="4.5603" ry="4.5603" style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" width="149.5792" x="5.4724" y="427.5163"/><ellipse cx="23.9874" cy="441.1973" fill="#ADD1B2" rx="9.1207" ry="9.1207" style="stroke: #2B6F8E; stroke-width: 0.91206818586678;"/><path d="M25.6833,445.0593 Q25.2842,445.2589 24.8282,445.3586 Q24.3864,445.4726 23.9019,445.4726 Q22.149,445.4726 21.2227,444.3183 Q20.3106,443.164 20.3106,440.9835 Q20.3106,438.8031 21.2227,437.6488 Q22.149,436.4945 23.9019,436.4945 Q24.3864,436.4945 24.8425,436.6085 Q25.2985,436.7082 25.6833,436.922 L25.6833,438.8174 Q25.2415,438.4184 24.8282,438.2331 Q24.4149,438.0336 23.9731,438.0336 Q23.0468,438.0336 22.5623,438.7889 Q22.0778,439.5299 22.0778,440.9835 Q22.0778,442.4514 22.5623,443.1925 Q23.0468,443.9335 23.9731,443.9335 Q24.4149,443.9335 24.8282,443.7482 Q25.2415,443.563 25.6833,443.1497 L25.6833,445.0593 Z "/><text fill="#183F53" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="109.4482" x="37.1212" y="445.3021">01 QueueMessage</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="6.3845" x2="154.1395" y1="454.8783" y2="454.8783"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="138.6344" x="10.9448" y="469.5324">sequence : uint32_t</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="131.3378" x="10.9448" y="483.3346">payload : uint32_t</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="138.6344" x="10.9448" y="497.1367">checksum : uint32_t</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="6.3845" x2="154.1395" y1="503.5813" y2="503.5813"/><!--MD5=[15b0de36700cf8bf422172734e699e19]
class Queue--><rect fill="#EDF6FA" height="92.7246" id="Queue" rx="4.5603" ry="4.5603" style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" width="268.148" x="172.3809" y="143.0149"/><ellipse cx="185.1498" cy="161.3774" fill="#ADD1B2" rx="9.1207" ry="9.1207" style="stroke: #2B6F8E; stroke-width: 0.91206818586678;"/><path d="M186.8457,165.2394 Q186.4467,165.4389 185.9907,165.5387 Q185.5489,165.6527 185.0643,165.6527 Q183.3115,165.6527 182.3851,164.4983 Q181.4731,163.344 181.4731,161.1636 Q181.4731,158.9832 182.3851,157.8288 Q183.3115,156.6745 185.0643,156.6745 Q185.5489,156.6745 186.0049,156.7885 Q186.4609,156.8883 186.8457,157.102 L186.8457,158.9974 Q186.4039,158.5984 185.9907,158.4131 Q185.5774,158.2136 185.1356,158.2136 Q184.2093,158.2136 183.7247,158.9689 Q183.2402,159.71 183.2402,161.1636 Q183.2402,162.6314 183.7247,163.3725 Q184.2093,164.1136 185.1356,164.1136 Q185.5774,164.1136 185.9907,163.9283 Q186.4039,163.743 186.8457,163.3298 L186.8457,165.2394 Z "/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="124.0413" x="195.1826" y="158.581">«FreeRTOS object»</text><text fill="#183F53" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="58.3724" x="228.017" y="172.3832">02 Queue</text><rect fill="#FFFFFF" height="15.6263" style="stroke: #000000; stroke-width: 0.91206818586678; stroke-dasharray: 2.0,2.0;" width="118.5689" x="324.6963" y="140.2787"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="116.7447" x="325.6083" y="152.1966">1 × QueueMessage</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="173.293" x2="439.6169" y1="179.7399" y2="179.7399"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="87.5585" x="177.8533" y="194.394">uxLength = 1</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="109.4482" x="177.8533" y="208.1961">uxItemSize = 12</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="116.7447" x="177.8533" y="221.9983">waiting : List_t</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="173.293" x2="439.6169" y1="228.4429" y2="228.4429"/><!--MD5=[bcee973e2623bef0127252815a37a6e8]
class Receiver--><rect fill="#EDF6FA" height="51.3181" id="Receiver" rx="4.5603" ry="4.5603" style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" width="107.624" x="241.6981" y="305.9741"/><ellipse cx="254.467" cy="324.3366" fill="#ADD1B2" rx="9.1207" ry="9.1207" style="stroke: #2B6F8E; stroke-width: 0.91206818586678;"/><path d="M256.1629,328.1986 Q255.7639,328.3981 255.3078,328.4979 Q254.8661,328.6119 254.3815,328.6119 Q252.6286,328.6119 251.7023,327.4576 Q250.7902,326.3032 250.7902,324.1228 Q250.7902,321.9424 251.7023,320.7881 Q252.6286,319.6337 254.3815,319.6337 Q254.8661,319.6337 255.3221,319.7477 Q255.7781,319.8475 256.1629,320.0613 L256.1629,321.9566 Q255.7211,321.5576 255.3078,321.3724 Q254.8946,321.1728 254.4528,321.1728 Q253.5265,321.1728 253.0419,321.9281 Q252.5574,322.6692 252.5574,324.1228 Q252.5574,325.5907 253.0419,326.3317 Q253.5265,327.0728 254.4528,327.0728 Q254.8946,327.0728 255.3078,326.8875 Q255.7211,326.7023 256.1629,326.289 L256.1629,328.1986 Z "/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="65.6689" x="273.6205" y="321.5403">«task p3»</text><text fill="#183F53" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="80.262" x="266.3239" y="335.3424">03 receiver</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="242.6101" x2="348.41" y1="342.6991" y2="342.6991"/><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="242.6101" x2="348.41" y1="349.9956" y2="349.9956"/><!--MD5=[7e0e21880190a3d3f8507b42d3153ce7]
class Sender--><rect fill="#EDF6FA" height="51.3181" id="Sender" rx="4.5603" ry="4.5603" style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" width="93.031" x="77.5258" y="21.4727"/><ellipse cx="90.2948" cy="39.8351" fill="#ADD1B2" rx="9.1207" ry="9.1207" style="stroke: #2B6F8E; stroke-width: 0.91206818586678;"/><path d="M91.9906,43.6972 Q91.5916,43.8967 91.1356,43.9965 Q90.6938,44.1105 90.2092,44.1105 Q88.4564,44.1105 87.53,42.9561 Q86.618,41.8018 86.618,39.6214 Q86.618,37.441 87.53,36.2866 Q88.4564,35.1323 90.2092,35.1323 Q90.6938,35.1323 91.1498,35.2463 Q91.6058,35.3461 91.9906,35.5598 L91.9906,37.4552 Q91.5488,37.0562 91.1356,36.8709 Q90.7223,36.6714 90.2805,36.6714 Q89.3542,36.6714 88.8696,37.4267 Q88.3851,38.1678 88.3851,39.6214 Q88.3851,41.0892 88.8696,41.8303 Q89.3542,42.5714 90.2805,42.5714 Q90.7223,42.5714 91.1356,42.3861 Q91.5488,42.2008 91.9906,41.7875 L91.9906,43.6972 Z "/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="65.6689" x="102.1516" y="37.0388">«task p2»</text><text fill="#183F53" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="65.6689" x="102.1516" y="50.841">04 sender</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="78.4379" x2="169.6447" y1="58.1976" y2="58.1976"/><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="78.4379" x2="169.6447" y1="65.4942" y2="65.4942"/><!--MD5=[b38b728b548c0e3506dacd7eefeceafe]
class Verifier--><rect fill="#EDF6FA" height="51.3181" id="Verifier" rx="4.5603" ry="4.5603" style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" width="107.624" x="420.4634" y="21.4727"/><ellipse cx="433.2324" cy="39.8351" fill="#ADD1B2" rx="9.1207" ry="9.1207" style="stroke: #2B6F8E; stroke-width: 0.91206818586678;"/><path d="M434.9283,43.6972 Q434.5292,43.8967 434.0732,43.9965 Q433.6314,44.1105 433.1469,44.1105 Q431.394,44.1105 430.4677,42.9561 Q429.5556,41.8018 429.5556,39.6214 Q429.5556,37.441 430.4677,36.2866 Q431.394,35.1323 433.1469,35.1323 Q433.6314,35.1323 434.0875,35.2463 Q434.5435,35.3461 434.9283,35.5598 L434.9283,37.4552 Q434.4865,37.0562 434.0732,36.8709 Q433.6599,36.6714 433.2181,36.6714 Q432.2918,36.6714 431.8073,37.4267 Q431.3227,38.1678 431.3227,39.6214 Q431.3227,41.0892 431.8073,41.8303 Q432.2918,42.5714 433.2181,42.5714 Q433.6599,42.5714 434.0732,42.3861 Q434.4865,42.2008 434.9283,41.7875 L434.9283,43.6972 Z "/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="65.6689" x="452.3858" y="37.0388">«task p1»</text><text fill="#183F53" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="80.262" x="445.0893" y="50.841">05 verifier</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="421.3755" x2="527.1754" y1="58.1976" y2="58.1976"/><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="421.3755" x2="527.1754" y1="65.4942" y2="65.4942"/><!--MD5=[13f56afd7aace6dccdfaaac41cf97a6a]
class Evidence--><rect fill="#EDF6FA" height="41.9551" id="Evidence" rx="4.5603" ry="4.5603" style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" width="195.1826" x="197.9188" y="448.2202"/><ellipse cx="210.6878" cy="461.9013" fill="#ADD1B2" rx="9.1207" ry="9.1207" style="stroke: #2B6F8E; stroke-width: 0.91206818586678;"/><path d="M212.3836,465.7633 Q211.9846,465.9628 211.5286,466.0626 Q211.0868,466.1766 210.6022,466.1766 Q208.8494,466.1766 207.923,465.0222 Q207.011,463.8679 207.011,461.6875 Q207.011,459.5071 207.923,458.3527 Q208.8494,457.1984 210.6022,457.1984 Q211.0868,457.1984 211.5428,457.3124 Q211.9988,457.4122 212.3836,457.6259 L212.3836,459.5213 Q211.9418,459.1223 211.5286,458.937 Q211.1153,458.7375 210.6735,458.7375 Q209.7472,458.7375 209.2626,459.4928 Q208.7781,460.2339 208.7781,461.6875 Q208.7781,463.1554 209.2626,463.8964 Q209.7472,464.6375 210.6735,464.6375 Q211.1153,464.6375 211.5286,464.4522 Q211.9418,464.2669 212.3836,463.8537 L212.3836,465.7633 Z "/><text fill="#183F53" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="167.8205" x="222.5446" y="466.006">06 bounded evidence[12]</text><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="198.8309" x2="392.1893" y1="475.5823" y2="475.5823"/><line style="stroke: #2B6F8E; stroke-width: 1.36810227880017;" x1="198.8309" x2="392.1893" y1="482.8788" y2="482.8788"/><!--MD5=[9ee1ac3479c04641a9fa33b0d8689cc5]
link Sender to Queue--><path d="M144.4078,73.0775 C156.0731,86.567 171.4415,102.9842 186.974,115.6528 C197.1071,123.9161 208.2525,131.9241 219.5439,139.4122 " fill="none" id="Sender-&gt;Queue" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><polygon fill="#8295A0" points="223.2378,141.8383,218.3716,134.2877,219.4235,139.3388,214.3724,140.3907,223.2378,141.8383" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="167.8205" x="187.886" y="112.0656">xQueueSend copies bytes</text><!--MD5=[09cfd712c72df97764c74258e9f74f00]
link Queue to Receiver--><path d="M302.8978,235.8816 C301.2652,256.841 299.3773,281.1476 297.9088,299.9088 " fill="none" id="Queue-&gt;Receiver" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><polygon fill="#8295A0" points="297.5622,304.4144,301.8328,296.5117,297.914,299.8677,294.558,295.9489,297.5622,304.4144" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="189.7102" x="301.5662" y="275.0248">xQueueReceive copies bytes</text><!--MD5=[64edf872e43ca0c8c575760486cc56fb]
link Receiver to Message--><path d="M255.7804,357.5971 C226.2476,376.2216 185.1954,402.1061 150.2176,424.169 " fill="none" id="Receiver-&gt;Message" style="stroke: #8295A0; stroke-width: 0.91206818586678; stroke-dasharray: 7.0,7.0;"/><polygon fill="#8295A0" points="146.7153,426.3762,155.6036,425.0763,150.5707,423.9405,151.7065,418.9077,146.7153,426.3762" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><!--MD5=[cf18d3e9a6aa366eff584d183c26af51]
link Sender to Message--><path d="M110.5883,73.1231 C106.6573,81.4959 102.7627,91.027 100.3275,100.1477 C70.3661,212.332 72.7922,350.3736 76.7505,421.296 " fill="none" id="Sender-&gt;Message" style="stroke: #8295A0; stroke-width: 0.91206818586678; stroke-dasharray: 7.0,7.0;"/><polygon fill="#8295A0" points="77.0059,425.7469,80.1799,417.3435,76.7458,421.194,72.8953,417.7598,77.0059,425.7469" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><!--MD5=[8800362ea40f2a880d9505a9840abf12]
link Receiver to Evidence--><path d="M295.5101,357.4421 C295.5101,381.5298 295.5101,417.894 295.5101,442.3374 " fill="none" id="Receiver-&gt;Evidence" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><polygon fill="#8295A0" points="295.5101,446.5968,299.1584,438.3881,295.5101,442.0364,291.8618,438.3881,295.5101,446.5968" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="51.0758" x="296.4222" y="396.567">publish</text><!--MD5=[f07991540e7dcca70126c27ce366cf99]
link Sender to Evidence--><path d="M125.7104,73.0227 C128.7567,109.6423 136.8558,179.6618 156.8757,235.7448 C177.7165,294.1172 193.4953,304.0679 225.2808,357.287 C243.1118,387.139 264.6092,420.8035 279.0929,443.1583 " fill="none" id="Sender-&gt;Evidence" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><polygon fill="#8295A0" points="281.5007,446.8704,280.0956,437.9981,279.0195,443.0441,273.9735,441.968,281.5007,446.8704" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="51.0758" x="176.2025" y="275.0248">publish</text><!--MD5=[56814c9b42e3ed7313d879f717312a3d]
link Verifier to Evidence--><path d="M522.3962,73.0319 C532.0185,80.4014 540.8473,89.4309 546.3288,100.1477 C570.0335,146.5446 694.9777,-39.5173 499.8134,278.612 C455.651,350.6016 376.7571,412.5766 331.0078,444.7453 " fill="none" id="Verifier-&gt;Evidence" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><polygon fill="#8295A0" points="327.551,447.1622,336.3716,445.4623,331.2925,444.5549,332.1999,439.4759,327.551,447.1622" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="43.7793" x="509.5087" y="275.0248">digest</text><!--MD5=[e12c46a982a3b860a0b38d721f27caf5]
link Verifier to Queue--><path d="M420.883,73.2143 C407.0195,80.9213 392.5541,90.0511 380.3324,100.1477 C366.8977,111.2384 354.0557,125.0198 342.9468,138.3633 " fill="none" id="Verifier-&gt;Queue" style="stroke: #8295A0; stroke-width: 0.91206818586678; stroke-dasharray: 7.0,7.0;"/><polygon fill="#8295A0" points="340.1285,141.8018,348.1614,137.7814,343.0261,138.2804,342.5272,133.1452,340.1285,141.8018" style="stroke: #8295A0; stroke-width: 0.91206818586678;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="11.8569" lengthAdjust="spacingAndGlyphs" textLength="160.524" x="381.2445" y="112.0656">verifies FIFO / states</text><!--MD5=[d6742c39f103031da227304c6aece6b9]
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam ArrowColor #8295a0
skinparam classBorderColor #2b6f8e
skinparam classBackgroundColor #edf6fa
skinparam classFontColor #183f53
skinparam roundcorner 10
top to bottom direction
title A2 STRUCTURE — queue length 1 and three task contexts
class "01 QueueMessage" as Message {
sequence : uint32_t
payload : uint32_t
checksum : uint32_t
}
class "02 Queue<1 × QueueMessage>" as Queue <<FreeRTOS object>> {
uxLength = 1
uxItemSize = 12
waiting : List_t
}
class "03 receiver" as Receiver <<task p3>>
class "04 sender" as Sender <<task p2>>
class "05 verifier" as Verifier <<task p1>>
class "06 bounded evidence[12]" as Evidence
Sender -down-> Queue : xQueueSend copies bytes
Queue -down-> Receiver : xQueueReceive copies bytes
Receiver ..> Message
Sender ..> Message
Receiver - -> Evidence : publish
Sender - -> Evidence : publish
Verifier - -> Evidence : digest
Verifier ..> Queue : verifies FIFO / states
@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: 17 KiB

+33
View File
@@ -0,0 +1,33 @@
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 12
skinparam sequenceArrowColor #8295a0
skinparam sequenceLifeLineBorderColor #2b6f8e
skinparam sequenceParticipantBorderColor #2b6f8e
skinparam sequenceParticipantBackgroundColor #edf6fa
title A5 FLOW — empty/full blocking, copy-by-value and FIFO
participant receiver
participant "Queue<1>" as queue
participant sender
participant verifier
receiver -> queue : 02 receive M1 / Blocked (empty)
sender -> queue : 03 send M1
queue --> receiver : 04 wake + copy M1
receiver -> receiver : delay(2)
sender -> queue : send M2 / queue full
sender -> sender : mutate source M2 → DEAD
sender -> sender : 05 evidence: source mutated
sender -> queue : send M3 / Blocked (full)
receiver -> sender : 06 observe eBlocked
receiver -> queue : 07 receive copied M2
queue --> sender : space available
sender -> queue : complete send M3
queue --> receiver : 08 receive M3
sender -> sender : 09 completed
verifier -> verifier : 10 FIFO + copy + digest = PASS
@enduml
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

+28
View File
@@ -0,0 +1,28 @@
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam stateBorderColor #2b6f8e
skinparam stateBackgroundColor #edf6fa
skinparam ArrowColor #8295a0
left to right direction
title A6 STATE — queue occupancy controls task readiness
state "01 EMPTY\nreceiver can block" as Empty
state "02 FULL(M2)\nsender can block" as Full
state "03 HANDOFF\nhigher receiver Ready" as Handoff
state "04 EMPTY\nspace wakes sender" as Space
state "05 FULL(M3)" as Full3
state "06 DONE\nFIFO 1,2,3" as Done
[*] --> Empty
Empty --> Handoff : send M1
Handoff --> Empty : receive M1
Empty --> Full : send M2
Full --> Space : receive M2
Space --> Full3 : blocked send completes
Full3 --> Done : receive M3
Done --> [*]
@enduml
+48
View File
@@ -0,0 +1,48 @@
<?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="104.6379px" preserveAspectRatio="none" style="width:895px;height:104px;" version="1.1" viewBox="0 0 895 104" width="895.9975px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="228.7166" x="335.6417" y="6.8997">A6 STATE — queue occupancy controls task readiness</text><rect fill="#EDF6FA" height="28.7415" rx="7.1474" ry="7.1474" style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" width="93.7738" x="49.7459" y="45.6649"/><line style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" x1="49.7459" x2="143.5197" y1="68.6884" y2="68.6884"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="36.5947" x="78.3355" y="55.4236">01 EMPTY</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="82.338" x="55.4638" y="64.0764">receiver can block</text><rect fill="#EDF6FA" height="28.7415" rx="7.1474" ry="7.1474" style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" width="84.6252" x="236.1499" y="13.0728"/><line style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" x1="236.1499" x2="320.7751" y1="36.0963" y2="36.0963"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="50.3177" x="253.3037" y="22.8315">02 FULL(M2)</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="73.1893" x="241.8679" y="31.4843">sender can block</text><rect fill="#EDF6FA" height="28.7415" rx="7.1474" ry="7.1474" style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" width="107.4968" x="224.7141" y="69.6801"/><line style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" x1="224.7141" x2="332.2109" y1="92.7037" y2="92.7037"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="45.7433" x="255.5909" y="79.4388">03 HANDOFF</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="96.061" x="230.432" y="88.0917">higher receiver Ready</text><rect fill="#EDF6FA" height="28.7415" rx="7.1474" ry="7.1474" style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" width="93.7738" x="413.4053" y="13.0728"/><line style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" x1="413.4053" x2="507.1792" y1="36.0963" y2="36.0963"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="36.5947" x="441.9949" y="22.8315">04 EMPTY</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="82.338" x="419.1233" y="31.4843">space wakes sender</text><rect fill="#EDF6FA" height="28.5896" rx="7.1474" ry="7.1474" style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" width="61.7535" x="643.2656" y="13.1528"/><line style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" x1="643.2656" x2="705.0191" y1="27.5235" y2="27.5235"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="50.3177" x="648.9835" y="22.9115">05 FULL(M3)</text><rect fill="#EDF6FA" height="28.7415" rx="7.1474" ry="7.1474" style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" width="57.1792" x="786.2135" y="13.0728"/><line style="stroke: #2B6F8E; stroke-width: 0.857687420584498;" x1="786.2135" x2="843.3926" y1="36.0963" y2="36.0963"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="32.0203" x="798.7929" y="22.8315">06 DONE</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="45.7433" x="791.9314" y="31.4843">FIFO 1,2,3</text><ellipse cx="9.1487" cy="60.0397" fill="#000000" rx="5.7179" ry="5.7179" style="stroke: none; stroke-width: 0.5717916137229987;"/><ellipse cx="883.9898" cy="27.4476" fill="none" rx="5.7179" ry="5.7179" style="stroke: #000000; stroke-width: 0.5717916137229987;"/><ellipse cx="884.2757" cy="27.7335" fill="#000000" rx="3.4307" ry="3.4307" style="stroke: none; stroke-width: 0.5717916137229987;"/><!--MD5=[1b6c22f718d70b2acdc4891e2995ec55]
link *start to Empty--><path d="M15.1239,60.0397 C21.6423,60.0397 33.2897,60.0397 45.7548,60.0397 " fill="none" id="*start-&gt;Empty" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="48.6023,60.0397,43.4562,57.7526,45.7433,60.0397,43.4562,62.3269,48.6023,60.0397" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><!--MD5=[94bc03fc53f6a1f1ff6d2e4f4a0faecd]
link Empty to Handoff--><path d="M143.737,66.2208 C167.2548,69.3485 196.0044,73.1681 220.8431,76.473 " fill="none" id="Empty-&gt;Handoff" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="223.622,76.839,218.8294,73.8818,220.7889,76.4552,218.2154,78.4147,223.622,76.839" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="32.0203" x="168.1067" y="66.2419">send M1</text><!--MD5=[e9f116b65c0223e5ba8b017dd73c0277]
link Handoff to Empty--><path d="M224.4511,91.7113 C204.2726,93.1522 181.2294,93.0435 160.6734,88.6293 C148.946,86.1077 136.7783,81.2475 126.2687,76.2386 " fill="none" id="Handoff-&gt;Empty" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="123.8386,75.055,127.4629,79.3652,126.4087,76.3073,129.4666,75.2531,123.8386,75.055" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="45.7433" x="161.2452" y="86.3804">receive M1</text><!--MD5=[90368b376c9d0f7b83c63d44c64b43f0]
link Empty to Full--><path d="M143.737,51.6458 C171.0057,46.7284 205.3018,40.5416 232.3875,35.6528 " fill="none" id="Empty-&gt;Full" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="235.1436,35.1554,229.6734,33.8172,232.33,35.6625,230.4847,38.319,235.1436,35.1554" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="32.0203" x="168.1067" y="38.5729">send M2</text><!--MD5=[34f6978f313c8cf45fc2f2cf4dfd8366]
link Full to Space--><path d="M320.9409,27.4476 C347.3806,27.4476 381.6766,27.4476 409.5629,27.4476 " fill="none" id="Full-&gt;Space" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="412.4104,27.4476,407.2643,25.1604,409.5515,27.4476,407.2643,29.7348,412.4104,27.4476" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="45.7433" x="349.9365" y="25.1987">receive M2</text><!--MD5=[8deda751e0ee2b7abf4b59c72f5083a1]
link Space to Full3--><path d="M507.2821,27.4476 C547.1074,27.4476 603.5832,27.4476 639.3945,27.4476 " fill="none" id="Space-&gt;Full3" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="642.1449,27.4476,636.9987,25.1604,639.2859,27.4476,636.9987,29.7348,642.1449,27.4476" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="100.6353" x="524.9047" y="25.1987">blocked send completes</text><!--MD5=[70d51384517b0897b3c6e4f223e97385]
link Full3 to Done--><path d="M705.162,27.4476 C727.9936,27.4476 759.1677,27.4476 782.3424,27.4476 " fill="none" id="Full3-&gt;Done" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="785.1213,27.4476,779.9752,25.1604,782.2624,27.4476,779.9752,29.7348,785.1213,27.4476" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.4333" lengthAdjust="spacingAndGlyphs" textLength="45.7433" x="722.7446" y="25.1987">receive M3</text><!--MD5=[a42de63a786df81771bbb4e49d521c78]
link Done to *end--><path d="M843.6385,27.4476 C854.7084,27.4476 866.6131,27.4476 874.4867,27.4476 " fill="none" id="Done-&gt;*end" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><polygon fill="#8295A0" points="877.3456,27.4476,872.1995,25.1604,874.4867,27.4476,872.1995,29.7348,877.3456,27.4476" style="stroke: #8295A0; stroke-width: 0.5717916137229987;"/><!--MD5=[9559420b8ab2e0a0407ff3c16b0f3c5d]
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam stateBorderColor #2b6f8e
skinparam stateBackgroundColor #edf6fa
skinparam ArrowColor #8295a0
left to right direction
title A6 STATE — queue occupancy controls task readiness
state "01 EMPTY\nreceiver can block" as Empty
state "02 FULL(M2)\nsender can block" as Full
state "03 HANDOFF\nhigher receiver Ready" as Handoff
state "04 EMPTY\nspace wakes sender" as Space
state "05 FULL(M3)" as Full3
state "06 DONE\nFIFO 1,2,3" as Done
[*] - -> Empty
Empty - -> Handoff : send M1
Handoff - -> Empty : receive M1
Empty - -> Full : send M2
Full - -> Space : receive M2
Space - -> Full3 : blocked send completes
Full3 - -> Done : receive M3
Done - -> [*]
@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: 9.8 KiB

+40
View File
@@ -0,0 +1,40 @@
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam objectBorderColor #2b6f8e
skinparam objectBackgroundColor #edf6fa
skinparam ArrowColor #8295a0
left to right direction
title A7 RUNTIME — checkpoint 06, sender blocked on a full queue
object "01 g_fc05" as Exp {
waiting_when_full = 1
sender_state_when_full = eBlocked
}
object "02 queue object" as Queue {
uxMessagesWaiting = 1
storage = M2 {2, 0x2222, checksum}
}
object "03 sender TCB" as Sender {
state = Blocked
pending = M3
sp = sender_sp
}
object "04 receiver TCB" as Receiver {
state = Running
sp = receiver_sp
}
object "05 source on sender stack" as Source {
sequence = 2
payload = 0xDEAD
}
Exp --> Queue
Queue --> Sender : send wait list
Receiver --> Queue : next receive
Sender --> Source
Queue .. Source : different bytes / ownership
@enduml
+57
View File
@@ -0,0 +1,57 @@
<?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="130.3052px" preserveAspectRatio="none" style="width:895px;height:130px;" version="1.1" viewBox="0 0 895 130" width="895.5287px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="296.3804" x="301.8098" y="7.7077">A7 RUNTIME — checkpoint 06, sender blocked on a full queue</text><rect fill="#EDF6FA" height="36.6633" style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" width="176.2952" x="3.8325" y="27.9344"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="45.9901" x="68.9851" y="36.9196">01 g_fc05</text><line style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" x1="4.4713" x2="179.489" y1="40.1555" y2="40.1555"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="107.3101" x="7.665" y="50.4182">waiting_when_full = 1</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="168.6302" x="7.665" y="60.0843">sender_state_when_full = eBlocked</text><rect fill="#EDF6FA" height="36.6633" style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" width="181.4053" x="281.0504" y="57.3169"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="76.6501" x="333.428" y="66.3022">02 queue object</text><line style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" x1="281.6891" x2="461.8169" y1="69.538" y2="69.538"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="107.3101" x="284.8829" y="79.8008">uxMessagesWaiting = 1</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="173.7402" x="284.8829" y="89.4669">storage = M2 {2, 0x2222, checksum}</text><rect fill="#EDF6FA" height="46.3294" style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" width="84.3151" x="601.0646" y="14.8017"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="66.4301" x="610.0071" y="23.7869">03 sender TCB</text><line style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" x1="601.7033" x2="684.741" y1="27.0228" y2="27.0228"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="76.6501" x="604.8971" y="37.2855">state = Blocked</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="61.3201" x="604.8971" y="46.9516">pending = M3</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="71.5401" x="604.8971" y="56.6177">sp = sender_sp</text><rect fill="#EDF6FA" height="36.6633" style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" width="89.4251" x="47.2676" y="86.6995"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="76.6501" x="53.6551" y="95.6847">04 receiver TCB</text><line style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" x1="47.9063" x2="136.0539" y1="98.9206" y2="98.9206"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="76.6501" x="51.1001" y="109.1833">state = Running</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="81.7601" x="51.1001" y="118.8494">sp = receiver_sp</text><rect fill="#EDF6FA" height="36.6633" style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" width="136.6927" x="751.8098" y="63.0657"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="127.7502" x="756.2811" y="72.0509">05 source on sender stack</text><line style="stroke: #2B6F8E; stroke-width: 0.9581263307310149;" x1="752.4485" x2="887.8637" y1="75.2868" y2="75.2868"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="61.3201" x="755.6423" y="85.5495">sequence = 2</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="81.7601" x="755.6423" y="95.2156">payload = 0xDEAD</text><!--MD5=[c7e2f7815283cf318f0c9942846ac238]
link Exp to Queue--><path d="M180.3513,55.522 C211.088,58.7669 245.7147,62.4205 276.956,65.7165 " fill="none" id="Exp-&gt;Queue" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><polygon fill="#8295A0" points="279.9837,66.0359,274.5373,62.8874,276.8078,65.6982,273.997,67.9688,279.9837,66.0359" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><!--MD5=[77650b74080cabae84971c6b445f8e18]
link Queue to Sender--><path d="M462.7367,63.0465 C507.7367,56.774 560.1973,49.4539 596.8105,44.3503 " fill="none" id="Queue-&gt;Sender" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><polygon fill="#8295A0" points="599.7871,43.9351,593.7425,42.1919,596.6235,44.3727,594.4426,47.2537,599.7871,43.9351" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="71.5401" x="482.2569" y="48.7173">send wait list</text><!--MD5=[bd40d14bac24a2b40beed526d69beb9b]
link Receiver to Queue--><path d="M136.7502,100.3751 C174.264,96.4149 229.4329,90.5958 276.8219,85.6008 " fill="none" id="Receiver-&gt;Queue" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><polygon fill="#8295A0" points="279.8368,85.2814,273.8501,83.3485,276.6609,85.6191,274.3904,88.4299,279.8368,85.2814" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="61.3201" x="199.929" y="85.1964">next receive</text><!--MD5=[f0e85450928f6d3cc06b8e67a47bac5f]
link Sender to Source--><path d="M685.4883,48.2594 C704.0632,52.852 726.4961,58.3964 747.6515,63.6278 " fill="none" id="Sender-&gt;Source" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><polygon fill="#8295A0" points="750.6473,64.3687,745.6791,60.5095,747.5467,63.6027,744.4535,65.4703,750.6473,64.3687" style="stroke: #8295A0; stroke-width: 0.63875088715401;"/><!--MD5=[54c05d9199c2a06215c5b06ed33e4e43]
link Queue to Source--><path d="M462.7686,79.8265 C497.4209,81.2317 537.3364,82.6242 573.5983,83.3141 C635.4741,84.4958 650.9574,83.8698 712.846,83.3141 C725.3463,83.1991 738.6707,83.0139 751.516,82.8031 " fill="none" id="Queue-Source" style="stroke: #8295A0; stroke-width: 0.63875088715401; stroke-dasharray: 7.0,7.0;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="8.3038" lengthAdjust="spacingAndGlyphs" textLength="137.9702" x="574.237" y="80.8018">different bytes / ownership</text><!--MD5=[1aa4087f7e4786f46038730c64dacc35]
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam objectBorderColor #2b6f8e
skinparam objectBackgroundColor #edf6fa
skinparam ArrowColor #8295a0
left to right direction
title A7 RUNTIME — checkpoint 06, sender blocked on a full queue
object "01 g_fc05" as Exp {
waiting_when_full = 1
sender_state_when_full = eBlocked
}
object "02 queue object" as Queue {
uxMessagesWaiting = 1
storage = M2 {2, 0x2222, checksum}
}
object "03 sender TCB" as Sender {
state = Blocked
pending = M3
sp = sender_sp
}
object "04 receiver TCB" as Receiver {
state = Running
sp = receiver_sp
}
object "05 source on sender stack" as Source {
sequence = 2
payload = 0xDEAD
}
Exp - -> Queue
Queue - -> Sender : send wait list
Receiver - -> Queue : next receive
Sender - -> Source
Queue .. Source : different bytes / ownership
@enduml
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 25.0.4-ea+4-1-Debian
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: null
--></g></svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

+21
View File
@@ -0,0 +1,21 @@
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam rectangleBorderColor #2b6f8e
skinparam rectangleBackgroundColor #edf6fa
skinparam ArrowColor #8295a0
top to bottom direction
title A8 PATTERNS — choose queue payload ownership explicitly
rectangle "01 VALUE MESSAGE\nQueueMessage bytes copied\nproducer may reuse source" as Value
rectangle "02 POINTER MESSAGE\naddress copied only\nlifetime remains external" as Pointer
rectangle "03 OWNERSHIP CONTRACT\nwho allocates? who frees?\ncan producer mutate?" as Contract
rectangle "04 FC05 DECISION\nsmall trivially copied value\nchecksum proves integrity" as Decision
Value --> Contract
Pointer --> Contract
Contract --> Decision
@enduml
+40
View File
@@ -0,0 +1,40 @@
<?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="350px" preserveAspectRatio="none" style="width:492px;height:350px;" version="1.1" viewBox="0 0 492 350" width="492px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="440" x="29.5" y="12.0669">A8 PATTERNS — choose queue payload ownership explicitly</text><!--MD5=[d7735d92f2a41b821568342a009b1039]
entity Value--><rect fill="#EDF6FA" height="65.3984" style="stroke: #2B6F8E; stroke-width: 1.5;" width="220" x="6" y="22.9328"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="16" y="44.9997">01 VALUE MESSAGE</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="200" x="16" y="60.1325">QueueMessage bytes copied</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="200" x="16" y="75.2653">producer may reuse source</text><!--MD5=[6da42ccc88702fc061c993ea5bf2f4d3]
entity Pointer--><rect fill="#EDF6FA" height="65.3984" style="stroke: #2B6F8E; stroke-width: 1.5;" width="220" x="261" y="22.9328"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="144" x="271" y="44.9997">02 POINTER MESSAGE</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="152" x="271" y="60.1325">address copied only</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="200" x="271" y="75.2653">lifetime remains external</text><!--MD5=[50931bcefbe76bf129939bc87583de63]
entity Contract--><rect fill="#EDF6FA" height="65.3984" style="stroke: #2B6F8E; stroke-width: 1.5;" width="220" x="133" y="148.3328"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="143" y="170.3997">03 OWNERSHIP CONTRACT</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="200" x="143" y="185.5325">who allocates? who frees?</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="160" x="143" y="200.6653">can producer mutate?</text><!--MD5=[df87d7b2fda1e21366f2ab2a052e296a]
entity Decision--><rect fill="#EDF6FA" height="65.3984" style="stroke: #2B6F8E; stroke-width: 1.5;" width="244" x="121" y="273.7328"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="131" y="295.7997">04 FC05 DECISION</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="224" x="131" y="310.9325">small trivially copied value</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="200" x="131" y="326.0653">checksum proves integrity</text><!--MD5=[eed4c6828643997c2e6f18e5f23f3fe8]
link Value to Contract--><path d="M149.04,88.7328 C166.38,105.5928 187.7,126.3028 205.64,143.7428 " fill="none" id="Value-&gt;Contract" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="209.04,147.0428,205.3748,137.9013,205.4548,143.5576,199.7985,143.6376,209.04,147.0428" style="stroke: #8295A0; stroke-width: 1.0;"/><!--MD5=[8a1b83c410d18f160d6a16e90925aced]
link Pointer to Contract--><path d="M337.7,88.7328 C320.22,105.5928 298.74,126.3028 280.65,143.7428 " fill="none" id="Pointer-&gt;Contract" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="277.22,147.0428,286.4751,143.675,280.8192,143.5721,280.9221,137.9162,277.22,147.0428" style="stroke: #8295A0; stroke-width: 1.0;"/><!--MD5=[dbe67369ebacc32143fd98003c1002ec]
link Contract to Decision--><path d="M243,214.1328 C243,230.4128 243,250.3028 243,267.3528 " fill="none" id="Contract-&gt;Decision" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="243,271.9828,247,262.9828,243,266.9828,239,262.9828,243,271.9828" style="stroke: #8295A0; stroke-width: 1.0;"/><!--MD5=[efb38cd3635009407a4569b7b513b9e1]
@startuml
scale max 900*520
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 13
skinparam rectangleBorderColor #2b6f8e
skinparam rectangleBackgroundColor #edf6fa
skinparam ArrowColor #8295a0
top to bottom direction
title A8 PATTERNS — choose queue payload ownership explicitly
rectangle "01 VALUE MESSAGE\nQueueMessage bytes copied\nproducer may reuse source" as Value
rectangle "02 POINTER MESSAGE\naddress copied only\nlifetime remains external" as Pointer
rectangle "03 OWNERSHIP CONTRACT\nwho allocates? who frees?\ncan producer mutate?" as Contract
rectangle "04 FC05 DECISION\nsmall trivially copied value\nchecksum proves integrity" as Decision
Value - -> Contract
Pointer - -> Contract
Contract - -> Decision
@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.4 KiB

+15
View File
@@ -0,0 +1,15 @@
<!doctype html>
<html lang="pl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="card-renderer" content="react">
<title>Karta pracy</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="app.css">
</head>
<body class="resource-header-enabled">
<div id="root"></div>
<script type="module" src="app.js"></script>
</body>
</html>
+39
View File
File diff suppressed because one or more lines are too long