48 lines
14 KiB
XML
48 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="541.0256px" preserveAspectRatio="none" style="width:606px;height:541px;" version="1.1" viewBox="0 0 606 541" width="606.8376px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="249.5726" x="177.7778" y="18.5974">A5 FLOW — priority inheritance and bounded inversion</text><rect fill="#FFFFFF" height="49.5417" style="stroke: #8095A1; stroke-width: 0.8547008547008547;" width="8.547" x="323.9316" y="104.2116"/><rect fill="#FFFFFF" height="49.5417" style="stroke: #8095A1; stroke-width: 0.8547008547008547;" width="8.547" x="323.9316" y="275.0589"/><rect fill="#FFFFFF" height="65.781" style="stroke: #8095A1; stroke-width: 0.8547008547008547;" width="8.547" x="387.1795" y="324.6006"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547; stroke-dasharray: 5.0,5.0;" x1="29.0598" x2="29.0598" y1="52.9605" y2="508.2838"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547; stroke-dasharray: 5.0,5.0;" x1="167.094" x2="167.094" y1="52.9605" y2="508.2838"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547; stroke-dasharray: 5.0,5.0;" x1="327.7778" x2="327.7778" y1="52.9605" y2="508.2838"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547; stroke-dasharray: 5.0,5.0;" x1="391.0256" x2="391.0256" y1="52.9605" y2="508.2838"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547; stroke-dasharray: 5.0,5.0;" x1="488.4615" x2="488.4615" y1="52.9605" y2="508.2838"/><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="44.4444" x="6.8376" y="27.3349"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="32.4786" x="12.8205" y="43.3682">Low p1</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="44.4444" x="6.8376" y="507.4291"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="32.4786" x="12.8205" y="523.4624">Low p1</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="40.1709" x="147.4359" y="27.3349"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="28.2051" x="153.4188" y="43.3682">Mutex</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="40.1709" x="147.4359" y="507.4291"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="28.2051" x="153.4188" y="523.4624">Mutex</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="47.0085" x="304.7009" y="27.3349"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="35.0427" x="310.6838" y="43.3682">High p3</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="47.0085" x="304.7009" y="507.4291"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="35.0427" x="310.6838" y="523.4624">High p3</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="62.3932" x="360.2564" y="27.3349"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="50.4274" x="366.2393" y="43.3682">Medium p2</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="62.3932" x="360.2564" y="507.4291"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="50.4274" x="366.2393" y="523.4624">Medium p2</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="58.9744" x="459.4017" y="27.3349"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="47.0085" x="465.3846" y="43.3682">Verifier p0</text><rect fill="#FEFECE" height="24.7708" style="stroke: #A80036; stroke-width: 1.282051282051282;" width="58.9744" x="459.4017" y="507.4291"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="47.0085" x="465.3846" y="523.4624">Verifier p0</text><rect fill="#FFFFFF" height="49.5417" style="stroke: #8095A1; stroke-width: 0.8547008547008547;" width="8.547" x="323.9316" y="104.2116"/><rect fill="#FFFFFF" height="49.5417" style="stroke: #8095A1; stroke-width: 0.8547008547008547;" width="8.547" x="323.9316" y="275.0589"/><rect fill="#FFFFFF" height="65.781" style="stroke: #8095A1; stroke-width: 0.8547008547008547;" width="8.547" x="387.1795" y="324.6006"/><polygon fill="#8095A1" points="157.265,76.0219,165.812,79.4407,157.265,82.8595,160.6838,79.4407" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="162.3932" y1="79.4407" y2="79.4407"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="90.5983" x="35.0427" y="74.9767">02 take; protected=1</text><polygon fill="#8095A1" points="313.6752,100.7928,322.2222,104.2116,313.6752,107.6304,317.094,104.2116" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="318.8034" y1="104.2116" y2="104.2116"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="27.3504" x="35.0427" y="99.7475">create</text><polygon fill="#8095A1" points="176.9231,125.5636,168.3761,128.9824,176.9231,132.4012,173.5043,128.9824" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="171.7949" x2="323.0769" y1="128.9824" y2="128.9824"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="108.547" x="182.0513" y="124.5183">03 take(portMAX_DELAY)</text><polygon fill="#8095A1" points="38.4615,150.3345,29.9145,153.7533,38.4615,157.1721,35.0427,153.7533" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547; stroke-dasharray: 2.0,2.0;" x1="33.3333" x2="327.3504" y1="153.7533" y2="153.7533"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="119.6581" x="43.5897" y="149.2892">Blocked; owner inherits p3</text><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="64.9573" y1="178.5241" y2="178.5241"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="64.9573" x2="64.9573" y1="178.5241" y2="189.6352"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.9145" x2="64.9573" y1="189.6352" y2="189.6352"/><polygon fill="#8095A1" points="38.4615,186.2164,29.9145,189.6352,38.4615,193.054,35.0427,189.6352" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="119.6581" x="35.0427" y="174.06">04 effective=3; holder=Low</text><polygon fill="#8095A1" points="381.1966,210.9873,389.7436,214.4061,381.1966,217.8249,384.6154,214.4061" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="386.3248" y1="214.4061" y2="214.4061"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="27.3504" x="35.0427" y="209.942">create</text><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="64.9573" y1="239.1769" y2="239.1769"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="64.9573" x2="64.9573" y1="239.1769" y2="250.288"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.9145" x2="64.9573" y1="250.288" y2="250.288"/><polygon fill="#8095A1" points="38.4615,246.8692,29.9145,250.288,38.4615,253.7068,35.0427,250.288" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="126.4957" x="35.0427" y="234.7128">05 Medium Ready, started=0</text><polygon fill="#8095A1" points="157.265,271.6401,165.812,275.0589,157.265,278.4777,160.6838,275.0589" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="162.3932" y1="275.0589" y2="275.0589"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="31.6239" x="35.0427" y="270.5948">06 give</text><polygon fill="#8095A1" points="313.6752,296.4109,322.2222,299.8297,313.6752,303.2485,317.094,299.8297" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547; stroke-dasharray: 2.0,2.0;" x1="167.5214" x2="318.8034" y1="299.8297" y2="299.8297"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="135.8974" x="173.5043" y="295.3656">07 acquire before give returns</text><polygon fill="#8095A1" points="176.9231,321.1818,168.3761,324.6006,176.9231,328.0194,173.5043,324.6006" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="171.7949" x2="327.3504" y1="324.6006" y2="324.6006"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="110.2564" x="182.0513" y="320.1365">protected=2; give; delete</text><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="395.7265" x2="431.6239" y1="349.3714" y2="349.3714"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="431.6239" x2="431.6239" y1="349.3714" y2="360.4825"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="396.5812" x2="431.6239" y1="360.4825" y2="360.4825"/><polygon fill="#8095A1" points="405.1282,357.0637,396.5812,360.4825,405.1282,363.9013,401.7094,360.4825" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="76.9231" x="401.7094" y="344.9073">08 run after High</text><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="395.7265" x2="431.6239" y1="389.5269" y2="389.5269"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="431.6239" x2="431.6239" y1="389.5269" y2="400.638"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="391.453" x2="431.6239" y1="400.638" y2="400.638"/><polygon fill="#8095A1" points="400,397.2192,391.453,400.638,400,404.0568,396.5812,400.638" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="27.3504" x="401.7094" y="385.0628">delete</text><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="64.9573" y1="421.1353" y2="421.1353"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="64.9573" x2="64.9573" y1="421.1353" y2="432.2464"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.9145" x2="64.9573" y1="432.2464" y2="432.2464"/><polygon fill="#8095A1" points="38.4615,428.8276,29.9145,432.2464,38.4615,435.6652,35.0427,432.2464" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="117.094" x="35.0427" y="416.6712">09 effective restored to p1</text><polygon fill="#8095A1" points="478.6325,453.5985,487.1795,457.0173,478.6325,460.4361,482.0513,457.0173" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="29.0598" x2="483.7607" y1="457.0173" y2="457.0173"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="47.0085" x="35.0427" y="452.5532">completed</text><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="488.8889" x2="524.7863" y1="481.7881" y2="481.7881"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="524.7863" x2="524.7863" y1="481.7881" y2="492.8992"/><line style="stroke: #8095A1; stroke-width: 0.8547008547008547;" x1="489.7436" x2="524.7863" y1="492.8992" y2="492.8992"/><polygon fill="#8095A1" points="498.2906,489.4804,489.7436,492.8992,498.2906,496.318,494.8718,492.8992" style="stroke: #8095A1; stroke-width: 0.8547008547008547;"/><text fill="#000000" font-family="Monospace" font-size="9.4017" lengthAdjust="spacingAndGlyphs" textLength="101.7094" x="494.8718" y="477.324">10 PASS + stable digest</text><!--MD5=[ce6370cadeb1047cdf2641e96d2c83a8]
|
||
@startuml
|
||
scale 600 width
|
||
skinparam backgroundColor transparent
|
||
skinparam shadowing false
|
||
skinparam defaultFontName Monospace
|
||
skinparam defaultFontSize 11
|
||
skinparam sequenceArrowColor #8095a1
|
||
skinparam sequenceLifeLineBorderColor #8095a1
|
||
title A5 FLOW — priority inheritance and bounded inversion
|
||
participant "Low p1" as L
|
||
participant Mutex as M
|
||
participant "High p3" as H
|
||
participant "Medium p2" as D
|
||
participant "Verifier p0" as V
|
||
L -> M : 02 take; protected=1
|
||
L -> H : create
|
||
activate H
|
||
H -> M : 03 take(portMAX_DELAY)
|
||
H - -> L : Blocked; owner inherits p3
|
||
deactivate H
|
||
L -> L : 04 effective=3; holder=Low
|
||
L -> D : create
|
||
L -> L : 05 Medium Ready, started=0
|
||
L -> M : 06 give
|
||
activate H
|
||
M - -> H : 07 acquire before give returns
|
||
H -> M : protected=2; give; delete
|
||
deactivate H
|
||
activate D
|
||
D -> D : 08 run after High
|
||
D -> D : delete
|
||
deactivate D
|
||
L -> L : 09 effective restored to p1
|
||
L -> V : completed
|
||
V -> V : 10 PASS + stable digest
|
||
@enduml
|
||
|
||
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> |