Files

48 lines
14 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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>