115 lines
14 KiB
XML
115 lines
14 KiB
XML
<?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="491.1479px" preserveAspectRatio="none" style="width:894px;height:491px;" version="1.1" viewBox="0 0 894 491" width="894.7471px" zoomAndPan="magnify"><defs/><g><!--MD5=[6754354365917abf8f1a56af1b7e344c]
|
|
class Context--><rect fill="#F5F8FA" height="71.5505" id="Context" style="stroke: #607985; stroke-width: 1.3132295719844358;" width="166.3424" x="5.2529" y="7.0827"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="9.6304" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="128.6965" x="24.0759" y="25.6521">«application storage»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="149.7082" x="13.57" y="50.6189">01 workerA context</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="94.5525" x="41.1479" y="65.9057">.data / .bss</text><!--MD5=[036c1653d048e8122c132b15802304de]
|
|
class Handle--><rect fill="#F5F8FA" height="71.5505" id="Handle" style="stroke: #607985; stroke-width: 1.3132295719844358;" width="236.3813" x="292.4125" y="7.0827"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="9.6304" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73.5409" x="373.8327" y="25.6521">«public API»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="157.5875" x="331.8093" y="50.6189">02 &handle / handle</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="220.6226" x="300.2918" y="65.9057">field address / opaque value</text><!--MD5=[55dfe95f9324421dd4dc987285821f78]
|
|
class TCB--><rect fill="#F5F8FA" height="71.5505" id="TCB" style="stroke: #607985; stroke-width: 1.3132295719844358;" width="166.3424" x="642.607" y="7.0827"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="9.6304" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="104.1829" x="673.6868" y="25.6521">«kernel internal»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="55.1556" x="698.2004" y="50.6189">03 TCB</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="47.2763" x="702.1401" y="65.9057">heap_4</text><!--MD5=[1a47157467d69c83c0a10e9152875283]
|
|
class Stack--><rect fill="#F5F8FA" height="71.5505" id="Stack" style="stroke: #607985; stroke-width: 1.3132295719844358;" width="166.3424" x="247.7626" y="276.2597"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="9.6304" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.1556" x="303.356" y="294.8292">«runtime»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="78.7938" x="291.537" y="319.7959">task stack</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="47.2763" x="307.2957" y="335.0828">heap_4</text><!--MD5=[ca6cab28393b6e810e6fecd613e1e410]
|
|
class ABI--><rect fill="#F5F8FA" height="71.5505" id="ABI" style="stroke: #607985; stroke-width: 1.3132295719844358;" width="166.3424" x="57.7821" y="141.6712"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="9.6304" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="30.642" x="125.6323" y="160.2407">«CPU»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="126.07" x="77.9183" y="185.2074">04 callback ABI</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="102.4319" x="89.7374" y="200.4942">a0 = &workerA</text><!--MD5=[c680266cf9e454ca06c2d1bb8b683e6b]
|
|
class Schedule--><rect fill="#F5F8FA" height="71.5505" id="Schedule" style="stroke: #607985; stroke-width: 1.3132295719844358;" width="196.9844" x="68.7257" y="410.8395"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="9.6304" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.1556" x="139.6401" y="429.409">«Hazard3»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="181.2257" x="76.6051" y="454.3757">05 scheduling evidence</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="181.2257" x="76.6051" y="469.6625">PC · tick · A/B/A trace</text><!--MD5=[13f56afd7aace6dccdfaaac41cf97a6a]
|
|
class Evidence--><rect fill="#F5F8FA" height="71.5505" id="Evidence" style="stroke: #607985; stroke-width: 1.3132295719844358;" width="181.2257" x="393.5311" y="410.8395"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="9.6304" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="61.284" x="453.5019" y="429.409">«verified»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="141.8288" x="413.2296" y="454.3757">06 final evidence</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="13.1323" lengthAdjust="spacingAndGlyphs" textLength="165.4669" x="401.4105" y="469.6625">result + source + E12</text><path d="M567.3152,149.4718 L567.3152,205.4208 A0,0 0 0 0 567.3152,205.4208 L884.2412,205.4208 A0,0 0 0 0 884.2412,205.4208 L884.2412,158.2267 L875.4864,149.4718 L729.2802,149.4718 L725.7782,78.9864 L722.2763,149.4718 L567.3152,149.4718 A0,0 0 0 0 567.3152,149.4718 " fill="#F7F5ED" style="stroke: #8A887C; stroke-width: 0.8754863813229572;"/><path d="M875.4864,149.4718 L875.4864,158.2267 L884.2412,158.2267 L875.4864,149.4718 " fill="#F7F5ED" style="stroke: #8A887C; stroke-width: 0.8754863813229572;"/><text fill="#3E4B50" font-family="DejaVu Sans Mono" font-size="10.5058" lengthAdjust="spacingAndGlyphs" textLength="226.751" x="577.821" y="168.8539">Debugger may inspect the TCB address.</text><text fill="#3E4B50" font-family="DejaVu Sans Mono" font-size="10.5058" lengthAdjust="spacingAndGlyphs" textLength="269.6498" x="577.821" y="181.0833">Application assertions use public APIs only.</text><text fill="#3E4B50" font-family="DejaVu Sans Mono" font-size="10.5058" lengthAdjust="spacingAndGlyphs" textLength="288.035" x="577.821" y="193.3128">Saved addresses are forensic after self-delete.</text><!--MD5=[f2b95524c1e28a7910e8f2eb818d98c7]
|
|
link Context to Handle--><path d="M171.8142,42.8638 C206.7286,42.8638 248.0603,42.8638 286.4241,42.8638 " fill="none" id="Context->Handle" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="290.7403,42.8638,282.8609,39.3619,286.3628,42.8638,282.8609,46.3658,290.7403,42.8638" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="77.0428" x="193.4825" y="31.4782">field value</text><!--MD5=[6b24788f218641d713329a2ae991a93f]
|
|
link Handle to TCB--><path d="M529.0827,42.8638 C564.8813,42.8638 603.5516,42.8638 637.0477,42.8638 " fill="none" id="Handle->TCB" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="641.0574,42.8638,633.178,39.3619,636.68,42.8638,633.178,46.3658,641.0574,42.8638" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="70.0389" x="550.6809" y="31.4782">identifies</text><!--MD5=[260ca96e0608034bbe20e6455096b2ea]
|
|
link TCB to Stack--><path d="M642.4582,62.0632 C543.7733,84.4932 390.2656,121.9027 371.2062,141.6712 C338.0866,176.0078 330.4961,232.3804 329.5418,270.5953 " fill="none" id="TCB->Stack" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="329.4718,274.7714,333.1083,266.9532,329.5468,270.3946,326.1054,266.8332,329.4718,274.7714" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="168.0934" x="377.3346" y="181.8167">points to separate block</text><!--MD5=[6db3f3df7074aeb50763e28cae90ff59]
|
|
link ABI to Schedule--><path d="M144.07,213.3911 C147.1518,247.6751 152.0632,301.3512 156.7121,347.8045 C158.5944,366.6187 160.8093,387.4377 162.7179,405.035 " fill="none" id="ABI->Schedule" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="163.1819,409.3074,165.8079,401.0944,162.7067,404.9558,158.8453,401.8547,163.1819,409.3074" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="63.035" x="162.8405" y="316.4053">PC / tick</text><!--MD5=[207925ab6ff16cd1f486f6b03ab44a05]
|
|
link Schedule to Evidence--><path d="M265.7539,446.6206 C304.5554,446.6206 348.9689,446.6206 387.5691,446.6206 " fill="none" id="Schedule->Evidence" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="391.894,446.6206,384.0146,443.1187,387.5165,446.6206,384.0146,450.1226,391.894,446.6206" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="84.0467" x="287.5973" y="435.235">verified E12</text><!--MD5=[0692a1c747d599fb65721a3192b7148d]
|
|
link Context to ABI--><!--MD5=[0b636485966694c3572d595f72d87511]
|
|
link ABI to Context--><path d="M127.0418,141.3911 C120.073,123.7675 111.5982,102.3356 104.3667,84.0554 " fill="none" id="ABI->Context" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="102.8521,80.2208,102.5041,88.8363,104.4671,84.2895,109.0139,86.2524,102.8521,80.2208" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="91.0506" x="125.5185" y="114.5269">exact address</text><!--MD5=[ba05e5e05147408eaf79428044b1e317]
|
|
link ABI to Stack--><path d="M164.4689,213.2685 C176.0428,228.4844 191.0399,245.6002 207.4903,257.8745 C218.2237,265.8765 230.3492,272.9767 242.7023,279.1663 " fill="none" id="ABI->Stack" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="246.4407,280.9961,240.9253,274.3682,242.5154,279.0585,237.8251,280.6486,246.4407,280.9961" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="105.0584" x="213.6187" y="249.1154">SP inside range</text><!--MD5=[40ef621f4b5ca7ebafeb4f5c63cfc119]
|
|
link Stack to Schedule--><path d="M287.4922,348.1547 C265.106,366.321 237.7646,388.4971 214.8093,407.1274 " fill="none" id="Stack->Schedule" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><polygon fill="#607985" points="211.6051,409.7276,219.9287,407.4769,215.0024,406.9673,215.5121,402.041,211.6051,409.7276" style="stroke: #607985; stroke-width: 1.1381322957198443;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="12.2568" lengthAdjust="spacingAndGlyphs" textLength="126.07" x="269.8687" y="383.6951">restored execution</text><!--MD5=[3e332d5c043ea547ae867251869e07bc]
|
|
@startuml
|
|
skinparam backgroundColor white
|
|
skinparam shadowing false
|
|
skinparam monochrome false
|
|
skinparam defaultFontName "DejaVu Sans Mono"
|
|
skinparam defaultFontSize 14
|
|
skinparam defaultFontColor #24343D
|
|
skinparam titleFontName "DejaVu Sans Mono"
|
|
skinparam titleFontSize 13
|
|
skinparam titleFontColor #536B78
|
|
skinparam titleFontStyle plain
|
|
|
|
skinparam ArrowColor #607985
|
|
skinparam ArrowFontColor #425B67
|
|
skinparam ArrowThickness 1.3
|
|
skinparam LineThickness 1.3
|
|
skinparam nodesep 36
|
|
skinparam ranksep 42
|
|
skinparam Padding 6
|
|
|
|
skinparam classBackgroundColor #F5F8FA
|
|
skinparam classBorderColor #607985
|
|
skinparam classBorderThickness 1.5
|
|
skinparam classFontColor #1F3039
|
|
skinparam classFontSize 15
|
|
skinparam classAttributeFontColor #2E424D
|
|
skinparam classAttributeFontSize 13
|
|
skinparam classStereotypeFontColor #526B77
|
|
skinparam classStereotypeFontSize 11
|
|
skinparam minClassWidth 190
|
|
skinparam ClassAttributeIconSize 0
|
|
|
|
skinparam stateBackgroundColor #F5F8FA
|
|
skinparam stateBorderColor #607985
|
|
skinparam stateBorderThickness 1.5
|
|
skinparam stateFontColor #1F3039
|
|
skinparam stateFontSize 14
|
|
skinparam stateAttributeFontSize 13
|
|
|
|
skinparam noteBackgroundColor #F7F5ED
|
|
skinparam noteBorderColor #8A887C
|
|
skinparam noteFontColor #3E4B50
|
|
skinparam noteFontSize 12
|
|
|
|
skinparam ParticipantBackgroundColor #F5F8FA
|
|
skinparam ParticipantBorderColor #607985
|
|
skinparam ParticipantBorderThickness 1.5
|
|
skinparam ParticipantFontColor #1F3039
|
|
skinparam ParticipantFontSize 13
|
|
skinparam ActorBorderColor #607985
|
|
skinparam ActorFontColor #1F3039
|
|
skinparam LifeLineBorderColor #8297A1
|
|
skinparam LifeLineBackgroundColor #F9FBFC
|
|
skinparam SequenceArrowColor #607985
|
|
skinparam SequenceMessageAlign center
|
|
skinparam ParticipantPadding 18
|
|
skinparam BoxPadding 8
|
|
|
|
hide circle
|
|
hide empty members
|
|
scale 900 width
|
|
top to bottom direction
|
|
|
|
class "01 workerA context\n.data / .bss" as Context <<application storage>>
|
|
class "02 &handle / handle\nfield address / opaque value" as Handle <<public API>>
|
|
class "03 TCB\nheap_4" as TCB <<kernel internal>>
|
|
class "task stack\nheap_4" as Stack <<runtime>>
|
|
class "04 callback ABI\na0 = &workerA" as ABI <<CPU>>
|
|
class "05 scheduling evidence\nPC · tick · A/B/A trace" as Schedule <<Hazard3>>
|
|
class "06 final evidence\nresult + source + E12" as Evidence <<verified>>
|
|
|
|
Context -right-> Handle : field value
|
|
Handle -right-> TCB : identifies
|
|
TCB -right-> Stack : points to separate block
|
|
ABI -right-> Schedule : PC / tick
|
|
Schedule -right-> Evidence : verified E12
|
|
Context -[hidden]down-> ABI
|
|
ABI - -> Context : exact address
|
|
ABI - -> Stack : SP inside range
|
|
Stack - -> Schedule : restored execution
|
|
|
|
note bottom of TCB
|
|
Debugger may inspect the TCB address.
|
|
Application assertions use public APIs only.
|
|
Saved addresses are forensic after self-delete.
|
|
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> |