feat: publish FreeRTOS C FC07 card
This commit is contained in:
@@ -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 A1 CONTEXT — real Hazard3 external interrupt to FreeRTOS task
|
||||
rectangle "01 Testbench IRQ source\nIO_SET_IRQ bit 5" as Source
|
||||
rectangle "02 Hazard3 IRQ controller\nMEIEA · priority · mcause=MEI" as H3
|
||||
rectangle "03 FreeRTOS trap port\nfull context → xISRStack" as Port
|
||||
rectangle "04 Application ISR\nclear · GiveFromISR · yield" as ISR
|
||||
rectangle "05 High-priority waiter\nbinary semaphore" as Waiter
|
||||
Source --> H3
|
||||
H3 --> Port
|
||||
Port --> ISR
|
||||
ISR --> Waiter
|
||||
@enduml
|
||||
@@ -0,0 +1,42 @@
|
||||
<?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.8603px" preserveAspectRatio="none" style="width:498px;height:520px;" version="1.1" viewBox="0 0 498 520" width="498.0417px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="484.1521" x="1.9842" y="11.9717">A1 CONTEXT — real Hazard3 external interrupt to FreeRTOS task</text><!--MD5=[c8da82a3e4fd5c54db14ac48b9861466]
|
||||
entity Source--><rect fill="#EDF6FA" height="49.8693" style="stroke: #2B6F8E; stroke-width: 1.488172427670706;" width="202.3915" x="136.9119" y="22.623"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="182.5492" x="146.833" y="44.5159">01 Testbench IRQ source</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="126.9907" x="146.833" y="59.5294">IO_SET_IRQ bit 5</text><!--MD5=[6075f46e3e6c82b53df9f2400a94965b]
|
||||
entity H3--><rect fill="#EDF6FA" height="49.8693" style="stroke: #2B6F8E; stroke-width: 1.488172427670706;" width="250.013" x="113.1011" y="132.0235"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="198.423" x="123.0223" y="153.9164">02 Hazard3 IRQ controller</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="230.1707" x="123.0223" y="168.9299">MEIEA · priority · mcause=MEI</text><!--MD5=[551215425a7de5316c648a342d6ec73b]
|
||||
entity Port--><rect fill="#EDF6FA" height="49.8693" style="stroke: #2B6F8E; stroke-width: 1.488172427670706;" width="210.3284" x="132.9434" y="241.4141"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="166.6753" x="142.8646" y="263.307">03 FreeRTOS trap port</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="190.4861" x="142.8646" y="278.3205">full context → xISRStack</text><!--MD5=[463c99212ccdf2a9aa2a23645c423e5c]
|
||||
entity ISR--><rect fill="#EDF6FA" height="49.8693" style="stroke: #2B6F8E; stroke-width: 1.488172427670706;" width="234.1391" x="121.038" y="350.8146"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="142.8646" x="130.9592" y="372.7075">04 Application ISR</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="214.2968" x="130.9592" y="387.721">clear · GiveFromISR · yield</text><!--MD5=[323c25cdec349f5ea5907cb1b91ccd49]
|
||||
entity Waiter--><rect fill="#EDF6FA" height="49.8693" style="stroke: #2B6F8E; stroke-width: 1.488172427670706;" width="202.3915" x="136.9119" y="460.2052"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="182.5492" x="146.833" y="482.0981">05 High-priority waiter</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="12.8975" lengthAdjust="spacingAndGlyphs" textLength="126.9907" x="146.833" y="497.1116">binary semaphore</text><!--MD5=[4fc73c884cfe531f1547a3d4074fe1a7]
|
||||
link Source to H3--><path d="M238.1076,72.9232 C238.1076,88.4399 238.1076,108.6791 238.1076,125.2871 " fill="none" id="Source->H3" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><polygon fill="#8295A0" points="238.1076,130.1881,242.076,121.2591,238.1076,125.2275,234.1391,121.2591,238.1076,130.1881" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><!--MD5=[397ca8f0de5b8fef912417d592dc57e9]
|
||||
link H3 to Port--><path d="M238.1076,182.3238 C238.1076,197.8404 238.1076,218.0697 238.1076,234.6777 " fill="none" id="H3->Port" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><polygon fill="#8295A0" points="238.1076,239.5787,242.076,230.6497,238.1076,234.6181,234.1391,230.6497,238.1076,239.5787" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><!--MD5=[0a408f81ebbcac93bd520e188d4e2be1]
|
||||
link Port to ISR--><path d="M238.1076,291.7143 C238.1076,307.231 238.1076,327.4702 238.1076,344.0782 " fill="none" id="Port->ISR" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><polygon fill="#8295A0" points="238.1076,348.9792,242.076,340.0502,238.1076,344.0186,234.1391,340.0502,238.1076,348.9792" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><!--MD5=[4d2bc5b9e47152e661298c7abd7751c2]
|
||||
link ISR to Waiter--><path d="M238.1076,401.1149 C238.1076,416.6315 238.1076,436.8608 238.1076,453.4688 " fill="none" id="ISR->Waiter" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><polygon fill="#8295A0" points="238.1076,458.3698,242.076,449.4408,238.1076,453.4092,234.1391,449.4408,238.1076,458.3698" style="stroke: #8295A0; stroke-width: 0.9921149517804707;"/><!--MD5=[c45f4dcd47a45ccf047c3a5a75637cb5]
|
||||
@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 A1 CONTEXT — real Hazard3 external interrupt to FreeRTOS task
|
||||
rectangle "01 Testbench IRQ source\nIO_SET_IRQ bit 5" as Source
|
||||
rectangle "02 Hazard3 IRQ controller\nMEIEA · priority · mcause=MEI" as H3
|
||||
rectangle "03 FreeRTOS trap port\nfull context → xISRStack" as Port
|
||||
rectangle "04 Application ISR\nclear · GiveFromISR · yield" as ISR
|
||||
rectangle "05 High-priority waiter\nbinary semaphore" as Waiter
|
||||
Source - -> H3
|
||||
H3 - -> Port
|
||||
Port - -> ISR
|
||||
ISR - -> Waiter
|
||||
@enduml
|
||||
|
||||
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
|
||||
(GPL source distribution)
|
||||
Java Runtime: OpenJDK Runtime Environment
|
||||
JVM: OpenJDK 64-Bit Server VM
|
||||
Java Version: 25.0.4-ea+4-1-Debian
|
||||
Operating System: Linux
|
||||
Default Encoding: UTF-8
|
||||
Language: en
|
||||
Country: null
|
||||
--></g></svg>
|
||||
|
After Width: | Height: | Size: 6.0 KiB |
@@ -0,0 +1,25 @@
|
||||
@startuml
|
||||
scale max 900*520
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName "DejaVu Sans Mono"
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2b6f8e
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
skinparam ArrowColor #8295a0
|
||||
top to bottom direction
|
||||
title A3 DISPATCH — external vector, saved context and FromISR switch
|
||||
rectangle "01 isr_external_irq" as Vector
|
||||
rectangle "02 freertos_risc_v_trap_handler\nsave full task context" as Trap
|
||||
rectangle "03 xISRStack\nmcause = 0x8000000b" as Stack
|
||||
rectangle "04 application_interrupt_handler" as App
|
||||
rectangle "05 xSemaphoreGiveFromISR\nxHPW = pdTRUE" as Give
|
||||
rectangle "06 portYIELD_FROM_ISR\nvTaskSwitchContext" as Yield
|
||||
rectangle "07 restore selected task context" as Restore
|
||||
Vector --> Trap
|
||||
Trap --> Stack
|
||||
Stack --> App
|
||||
App --> Give
|
||||
Give --> Yield
|
||||
Yield --> Restore
|
||||
@enduml
|
||||
@@ -0,0 +1,50 @@
|
||||
<?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.0237px" preserveAspectRatio="none" style="width:344px;height:520px;" version="1.1" viewBox="0 0 344 520" width="344.9137px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="334.3009" x="1.5161" y="8.4437">A3 DISPATCH — external vector, saved context and FromISR switch</text><!--MD5=[aabf3b499c2cf719265b7c3ac778f6cd]
|
||||
entity Vector--><rect fill="#EDF6FA" height="25.7501" style="stroke: #2B6F8E; stroke-width: 1.137078037447041;" width="115.982" x="106.1273" y="16.9112"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="100.8209" x="113.7078" y="32.9354">01 isr_external_irq</text><!--MD5=[8fb8d31695e54a435865fdf9a8b62965]
|
||||
entity Trap--><rect fill="#EDF6FA" height="36.3391" style="stroke: #2B6F8E; stroke-width: 1.137078037447041;" width="179.6583" x="74.2891" y="88.1453"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="164.4973" x="81.8696" y="104.1696">02 freertos_risc_v_trap_handler</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="116.74" x="81.8696" y="114.7586">save full task context</text><!--MD5=[ec069bc136e2ed19ea7849b563e95cbb]
|
||||
entity Stack--><rect fill="#EDF6FA" height="36.3391" style="stroke: #2B6F8E; stroke-width: 1.137078037447041;" width="115.982" x="106.1273" y="169.9695"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="63.6764" x="113.7078" y="185.9937">03 xISRStack</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="100.8209" x="113.7078" y="196.5827">mcause = 0x8000000b</text><!--MD5=[6e8f311b0aa23032184ffba0ef926f91]
|
||||
entity App--><rect fill="#EDF6FA" height="25.7501" style="stroke: #2B6F8E; stroke-width: 1.137078037447041;" width="184.9647" x="71.6359" y="251.7936"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="169.8037" x="79.2164" y="267.8178">04 application_interrupt_handler</text><!--MD5=[5b1bd6a7e81d56a128126ca894b4dea0]
|
||||
entity Give--><rect fill="#EDF6FA" height="36.3391" style="stroke: #2B6F8E; stroke-width: 1.137078037447041;" width="142.5138" x="92.8614" y="323.0278"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="127.3527" x="100.4419" y="339.052">05 xSemaphoreGiveFromISR</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="68.9827" x="100.4419" y="349.641">xHPW = pdTRUE</text><!--MD5=[89b6b9f582cb55b01c677c38f03b5a6e]
|
||||
entity Yield--><rect fill="#EDF6FA" height="36.3391" style="stroke: #2B6F8E; stroke-width: 1.137078037447041;" width="126.5947" x="100.8209" y="404.8443"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="111.4336" x="108.4014" y="420.8685">06 portYIELD_FROM_ISR</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="95.5146" x="108.4014" y="431.4576">vTaskSwitchContext</text><!--MD5=[2999f9717112c470f2aa05529e02a51b]
|
||||
entity Restore--><rect fill="#EDF6FA" height="25.7501" style="stroke: #2B6F8E; stroke-width: 1.137078037447041;" width="184.9647" x="71.6359" y="486.6685"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="9.0966" lengthAdjust="spacingAndGlyphs" textLength="169.8037" x="79.2164" y="502.6927">07 restore selected task context</text><!--MD5=[6cbf32367f714346f3b133b410d79dad]
|
||||
link Vector to Trap--><path d="M164.1183,42.9351 C164.1183,53.8283 164.1183,69.9597 164.1183,83.1195 " fill="none" id="Vector->Trap" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><polygon fill="#8295A0" points="164.1183,86.6747,167.1505,79.8523,164.1183,82.8845,161.0861,79.8523,164.1183,86.6747" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><!--MD5=[b0767bc8531d10a9b766350c06937c90]
|
||||
link Trap to Stack--><path d="M164.1183,124.6986 C164.1183,136.5166 164.1183,152.1932 164.1183,164.9057 " fill="none" id="Trap->Stack" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><polygon fill="#8295A0" points="164.1183,168.6505,167.1505,161.828,164.1183,164.8602,161.0861,161.828,164.1183,168.6505" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><!--MD5=[e4dab99c883f7bd47772c670c9868b5c]
|
||||
link Stack to App--><path d="M164.1183,206.6744 C164.1183,218.7274 164.1183,234.5858 164.1183,246.5479 " fill="none" id="Stack->App" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><polygon fill="#8295A0" points="164.1183,250.2699,167.1505,243.4475,164.1183,246.4797,161.0861,243.4475,164.1183,250.2699" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><!--MD5=[1be6bdf4fccaffb580315b926a55fdeb]
|
||||
link App to Give--><path d="M164.1183,277.81 C164.1183,288.7107 164.1183,304.8345 164.1183,318.0019 " fill="none" id="App->Give" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><polygon fill="#8295A0" points="164.1183,321.5496,167.1505,314.7271,164.1183,317.7593,161.0861,314.7271,164.1183,321.5496" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><!--MD5=[26e107217348d7820e3534419db97115]
|
||||
link Give to Yield--><path d="M164.1183,359.5734 C164.1183,371.3991 164.1183,387.068 164.1183,399.7881 " fill="none" id="Give->Yield" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><polygon fill="#8295A0" points="164.1183,403.5253,167.1505,396.7028,164.1183,399.735,161.0861,396.7028,164.1183,403.5253" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><!--MD5=[3fcff4eda15420d09f3f572de4dd84c6]
|
||||
link Yield to Restore--><path d="M164.1183,441.5492 C164.1183,453.6098 164.1183,469.4607 164.1183,481.4303 " fill="none" id="Yield->Restore" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><polygon fill="#8295A0" points="164.1183,485.1448,167.1505,478.3223,164.1183,481.3545,161.0861,478.3223,164.1183,485.1448" style="stroke: #8295A0; stroke-width: 0.758052024964694;"/><!--MD5=[d2de30118125ffc21081098f887fa52b]
|
||||
@startuml
|
||||
scale max 900*520
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName "DejaVu Sans Mono"
|
||||
skinparam defaultFontSize 12
|
||||
skinparam rectangleBorderColor #2b6f8e
|
||||
skinparam rectangleBackgroundColor #edf6fa
|
||||
skinparam ArrowColor #8295a0
|
||||
top to bottom direction
|
||||
title A3 DISPATCH — external vector, saved context and FromISR switch
|
||||
rectangle "01 isr_external_irq" as Vector
|
||||
rectangle "02 freertos_risc_v_trap_handler\nsave full task context" as Trap
|
||||
rectangle "03 xISRStack\nmcause = 0x8000000b" as Stack
|
||||
rectangle "04 application_interrupt_handler" as App
|
||||
rectangle "05 xSemaphoreGiveFromISR\nxHPW = pdTRUE" as Give
|
||||
rectangle "06 portYIELD_FROM_ISR\nvTaskSwitchContext" as Yield
|
||||
rectangle "07 restore selected task context" as Restore
|
||||
Vector - -> Trap
|
||||
Trap - -> Stack
|
||||
Stack - -> App
|
||||
App - -> Give
|
||||
Give - -> Yield
|
||||
Yield - -> Restore
|
||||
@enduml
|
||||
|
||||
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
|
||||
(GPL source distribution)
|
||||
Java Runtime: OpenJDK Runtime Environment
|
||||
JVM: OpenJDK 64-Bit Server VM
|
||||
Java Version: 25.0.4-ea+4-1-Debian
|
||||
Operating System: Linux
|
||||
Default Encoding: UTF-8
|
||||
Language: en
|
||||
Country: null
|
||||
--></g></svg>
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
@@ -0,0 +1,28 @@
|
||||
@startuml
|
||||
scale max 900*520
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName "DejaVu Sans Mono"
|
||||
skinparam defaultFontSize 12
|
||||
skinparam sequenceParticipantBorderColor #2b6f8e
|
||||
skinparam sequenceParticipantBackgroundColor #edf6fa
|
||||
skinparam sequenceArrowColor #8295a0
|
||||
title A5 FLOW — ISR wakes waiter before interrupted stimulus continues
|
||||
participant waiter
|
||||
participant semaphore
|
||||
participant stimulus
|
||||
participant Hazard3
|
||||
participant ISR
|
||||
participant verifier
|
||||
waiter -> semaphore : 02 take / Blocked
|
||||
stimulus -> stimulus : 03 before trigger
|
||||
stimulus -> Hazard3 : IO_SET_IRQ bit 5
|
||||
Hazard3 -> ISR : 04 MEI / xISRStack
|
||||
ISR -> Hazard3 : 05 clear source
|
||||
ISR -> semaphore : 06 give / xHPW=pdTRUE
|
||||
ISR -> waiter : portYIELD_FROM_ISR
|
||||
waiter -> waiter : 07 runs; stimulus_after=0
|
||||
waiter -> waiter : self-delete
|
||||
stimulus -> stimulus : 08 resumes after trigger; waiter_ran=1
|
||||
verifier -> verifier : 09 order + stacks + mcause = PASS
|
||||
@enduml
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,25 @@
|
||||
@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
|
||||
top to bottom direction
|
||||
title A6 STATE — binary semaphore and task readiness across ISR
|
||||
state "01 EMPTY\nwaiter Blocked" as Empty
|
||||
state "02 IRQ PENDING\nstimulus interrupted" as Pending
|
||||
state "03 GIVEN FROM ISR\nwaiter Ready" as Given
|
||||
state "04 SWITCH REQUESTED\nxHPW=true" as Switch
|
||||
state "05 TAKEN\nwaiter Running" as Taken
|
||||
state "06 STIMULUS RESUMED" as Resumed
|
||||
[*] --> Empty
|
||||
Empty --> Pending : SET_IRQ
|
||||
Pending --> Given : GiveFromISR
|
||||
Given --> Switch : portYIELD_FROM_ISR
|
||||
Switch --> Taken : restore waiter context
|
||||
Taken --> Resumed : waiter completes
|
||||
Resumed --> [*]
|
||||
@enduml
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="520.5118px" preserveAspectRatio="none" style="width:277px;height:520px;" version="1.1" viewBox="0 0 277 520" width="277.3702px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="269.1081" x="1.1803" y="7.1213">A6 STATE — binary semaphore and task readiness across ISR</text><rect fill="#EDF6FA" height="29.6642" rx="7.3769" ry="7.3769" style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" width="77.8997" x="67.277" y="61.2592"/><line style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" x1="67.277" x2="145.1768" y1="85.0219" y2="85.0219"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="37.7696" x="87.3421" y="71.3312">01 EMPTY</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="66.0967" x="73.1785" y="80.2618">waiter Blocked</text><rect fill="#EDF6FA" height="29.6642" rx="7.3769" ry="7.3769" style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" width="106.2269" x="53.1134" y="136.3675"/><line style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" x1="53.1134" x2="159.3403" y1="160.1302" y2="160.1302"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="66.0967" x="73.1785" y="146.4395">02 IRQ PENDING</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="94.4239" x="59.0149" y="155.3701">stimulus interrupted</text><rect fill="#EDF6FA" height="29.6642" rx="7.3769" ry="7.3769" style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" width="92.0633" x="60.1952" y="211.4699"/><line style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" x1="60.1952" x2="152.2585" y1="235.2326" y2="235.2326"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="80.2603" x="66.0967" y="221.5419">03 GIVEN FROM ISR</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="56.6543" x="77.8997" y="230.4725">waiter Ready</text><rect fill="#EDF6FA" height="29.6642" rx="7.3769" ry="7.3769" style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" width="101.5057" x="55.474" y="286.5782"/><line style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" x1="55.474" x2="156.9797" y1="310.3409" y2="310.3409"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="89.7027" x="61.3755" y="296.6502">04 SWITCH REQUESTED</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="42.4908" x="84.9815" y="305.5808">xHPW=true</text><rect fill="#EDF6FA" height="29.6642" rx="7.3769" ry="7.3769" style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" width="77.8997" x="67.277" y="361.6806"/><line style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" x1="67.277" x2="145.1768" y1="385.4434" y2="385.4434"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="37.7696" x="87.3421" y="371.7526">05 TAKEN</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="66.0967" x="73.1785" y="380.6833">waiter Running</text><rect fill="#EDF6FA" height="29.5075" rx="7.3769" ry="7.3769" style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" width="101.5057" x="55.474" y="436.7889"/><line style="stroke: #2B6F8E; stroke-width: 0.8852240989493283;" x1="55.474" x2="156.9797" y1="451.621" y2="451.621"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="89.7027" x="61.3755" y="446.861">06 STIMULUS RESUMED</text><ellipse cx="106.2269" cy="19.3586" fill="#000000" rx="5.9015" ry="5.9015" style="stroke: none; stroke-width: 0.5901493992995522;"/><ellipse cx="106.2269" cy="508.197" fill="none" rx="5.9015" ry="5.9015" style="stroke: #000000; stroke-width: 0.5901493992995522;"/><ellipse cx="106.522" cy="508.4921" fill="#000000" rx="3.5409" ry="3.5409" style="stroke: none; stroke-width: 0.5901493992995522;"/><!--MD5=[1b6c22f718d70b2acdc4891e2995ec55]
|
||||
link *start to Empty--><path d="M106.2269,25.4784 C106.2269,32.8789 106.2269,46.3461 106.2269,57.4468 " fill="none" id="*start->Empty" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><polygon fill="#8295A0" points="106.2269,60.2146,108.5875,54.9033,106.2269,57.2639,103.8663,54.9033,106.2269,60.2146" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><!--MD5=[a4880e26ac2cdc0de7f354aa96112041]
|
||||
link Empty to Pending--><path d="M106.2269,91.1089 C106.2269,102.9178 106.2269,119.6781 106.2269,132.4076 " fill="none" id="Empty->Pending" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><polygon fill="#8295A0" points="106.2269,135.3229,108.5875,130.0116,106.2269,132.3722,103.8663,130.0116,106.2269,135.3229" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="33.0484" x="106.817" y="116.3419">SET_IRQ</text><!--MD5=[5616f7cb50bde399db1f2ae7efa7296c]
|
||||
link Pending to Given--><path d="M106.2269,166.2172 C106.2269,178.0202 106.2269,194.7864 106.2269,207.51 " fill="none" id="Pending->Given" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><polygon fill="#8295A0" points="106.2269,210.4253,108.5875,205.114,106.2269,207.4746,103.8663,205.114,106.2269,210.4253" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="51.9331" x="106.817" y="191.4443">GiveFromISR</text><!--MD5=[1c2dd5d84ba08954ba58943cc4492326]
|
||||
link Given to Switch--><path d="M106.2269,241.3256 C106.2269,253.1285 106.2269,269.8888 106.2269,282.6183 " fill="none" id="Given->Switch" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><polygon fill="#8295A0" points="106.2269,285.5336,108.5875,280.2223,106.2269,282.5829,103.8663,280.2223,106.2269,285.5336" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="84.9815" x="106.817" y="266.5526">portYIELD_FROM_ISR</text><!--MD5=[b7d08ae4f9d76760ec8e02a899807a57]
|
||||
link Switch to Taken--><path d="M106.2269,316.428 C106.2269,328.231 106.2269,344.9971 106.2269,357.7207 " fill="none" id="Switch->Taken" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><polygon fill="#8295A0" points="106.2269,360.642,108.5875,355.3306,106.2269,357.6912,103.8663,355.3306,106.2269,360.642" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="103.8663" x="106.817" y="341.655">restore waiter context</text><!--MD5=[667f95f273f4398779e2224fc978fb4f]
|
||||
link Taken to Resumed--><path d="M106.2269,391.5186 C106.2269,403.3098 106.2269,420.0582 106.2269,432.77 " fill="none" id="Taken->Resumed" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><polygon fill="#8295A0" points="106.2269,435.6795,108.5875,430.3681,106.2269,432.7287,103.8663,430.3681,106.2269,435.6795" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="7.6719" lengthAdjust="spacingAndGlyphs" textLength="75.5391" x="106.817" y="416.7633">waiter completes</text><!--MD5=[c6ccdde97f90e7952aef870c82e2f1d1]
|
||||
link Resumed to *end--><path d="M106.2269,466.4203 C106.2269,476.5532 106.2269,489.8434 106.2269,498.554 " fill="none" id="Resumed->*end" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><polygon fill="#8295A0" points="106.2269,501.31,108.5875,495.9986,106.2269,498.3592,103.8663,495.9986,106.2269,501.31" style="stroke: #8295A0; stroke-width: 0.5901493992995522;"/><!--MD5=[b5a5f540820077c6d0ff1a37c770258d]
|
||||
@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
|
||||
top to bottom direction
|
||||
title A6 STATE — binary semaphore and task readiness across ISR
|
||||
state "01 EMPTY\nwaiter Blocked" as Empty
|
||||
state "02 IRQ PENDING\nstimulus interrupted" as Pending
|
||||
state "03 GIVEN FROM ISR\nwaiter Ready" as Given
|
||||
state "04 SWITCH REQUESTED\nxHPW=true" as Switch
|
||||
state "05 TAKEN\nwaiter Running" as Taken
|
||||
state "06 STIMULUS RESUMED" as Resumed
|
||||
[*] - -> Empty
|
||||
Empty - -> Pending : SET_IRQ
|
||||
Pending - -> Given : GiveFromISR
|
||||
Given - -> Switch : portYIELD_FROM_ISR
|
||||
Switch - -> Taken : restore waiter context
|
||||
Taken - -> Resumed : waiter completes
|
||||
Resumed - -> [*]
|
||||
@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.4 KiB |
@@ -0,0 +1,37 @@
|
||||
@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
|
||||
top to bottom direction
|
||||
title A7 RUNTIME — three stacks and context-selected return
|
||||
object "01 waiter TCB" as Waiter {
|
||||
priority = 3
|
||||
waiter_sp
|
||||
state: Blocked → Running
|
||||
}
|
||||
object "02 stimulus TCB" as Stimulus {
|
||||
priority = 2
|
||||
stimulus_sp
|
||||
interrupted after SET_IRQ
|
||||
}
|
||||
object "03 xISRStack" as ISR {
|
||||
isr_sp
|
||||
mcause = 0x8000000b
|
||||
source_after_clear = 0
|
||||
}
|
||||
object "04 binary semaphore" as Sem
|
||||
object "05 evidence[9]" as Evidence {
|
||||
E07 waiter before E08 stimulus
|
||||
}
|
||||
Stimulus --> ISR : interrupt
|
||||
ISR --> Sem : GiveFromISR
|
||||
Sem --> Waiter : unblock
|
||||
ISR --> Waiter : restore selected context
|
||||
Waiter --> Evidence
|
||||
Stimulus --> Evidence
|
||||
@enduml
|
||||
@@ -0,0 +1,55 @@
|
||||
<?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.7272px" preserveAspectRatio="none" style="width:427px;height:520px;" version="1.1" viewBox="0 0 427 520" width="427.6503px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="355.5367" x="39.4109" y="10.1185">A7 RUNTIME — three stacks and context-selected return</text><rect fill="#EDF6FA" height="60.8196" style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" width="171.0601" x="163.136" y="364.2011"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="87.2071" x="205.0625" y="375.9966">01 waiter TCB</text><line style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" x1="163.9746" x2="333.3576" y1="380.2446" y2="380.2446"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="80.4989" x="168.1672" y="393.7171">priority = 3</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="60.3742" x="168.1672" y="406.4064">waiter_sp</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="160.9978" x="168.1672" y="419.0958">state: Blocked → Running</text><rect fill="#EDF6FA" height="60.8196" style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" width="177.7684" x="227.7028" y="19.4059"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="100.6236" x="266.2752" y="31.2015">02 stimulus TCB</text><line style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" x1="228.5414" x2="404.6327" y1="35.4494" y2="35.4494"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="80.4989" x="232.734" y="48.922">priority = 2</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="73.7906" x="232.734" y="61.6113">stimulus_sp</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="167.706" x="232.734" y="74.3006">interrupted after SET_IRQ</text><rect fill="#EDF6FA" height="60.8196" style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" width="157.6436" x="176.5525" y="144.7913"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="80.4989" x="215.1249" y="156.5869">03 xISRStack</text><line style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" x1="177.391" x2="333.3576" y1="160.8348" y2="160.8348"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="40.2494" x="181.5837" y="174.3074">isr_sp</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="127.4566" x="181.5837" y="186.9967">mcause = 0x8000000b</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="147.5813" x="181.5837" y="199.686">source_after_clear = 0</text><rect fill="#EDF6FA" height="29.4599" style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" width="139.196" x="192.4846" y="270.1767"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="127.4566" x="198.3543" y="281.9723">04 binary semaphore</text><line style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" x1="193.3231" x2="330.842" y1="286.2202" y2="286.2202"/><rect fill="#EDF6FA" height="35.441" style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" width="211.3096" x="207.5781" y="476.17"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="93.9154" x="266.2752" y="487.9655">05 evidence[9]</text><line style="stroke: #2B6F8E; stroke-width: 1.2577950791791073;" x1="208.4166" x2="418.0492" y1="492.2135" y2="492.2135"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="201.2472" x="212.6093" y="505.686">E07 waiter before E08 stimulus</text><!--MD5=[b7e71f7141b02c58c904389e905337d6]
|
||||
link Stimulus to ISR--><path d="M301.7702,80.6019 C292.9656,98.3871 281.7713,121.0274 272.5726,139.6008 " fill="none" id="Stimulus->ISR" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><polygon fill="#8295A0" points="270.7278,143.3407,277.0826,138.0662,272.5884,139.5835,271.0711,135.0893,270.7278,143.3407" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="60.3742" x="288.6556" y="116.3374">interrupt</text><!--MD5=[543c5bbe781d98d8f2f3d49b22d318ca]
|
||||
link ISR to Sem--><path d="M257.2275,205.8447 C258.393,224.5859 259.8605,248.2324 260.8751,264.5921 " fill="none" id="ISR->Sem" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><polygon fill="#8295A0" points="261.1183,268.5751,263.9909,260.8323,260.8545,264.3908,257.296,261.2543,261.1183,268.5751" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="73.7906" x="260.3636" y="241.7228">GiveFromISR</text><!--MD5=[73d18557beaa1ebac0bafb58cabd0786]
|
||||
link Sem to Waiter--><path d="M260.33,299.8691 C258.4853,314.7278 255.5085,338.6846 253.0264,358.6752 " fill="none" id="Sem->Waiter" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><polygon fill="#8295A0" points="252.5317,362.675,256.8085,355.6101,253.0591,358.5156,250.1536,354.7662,252.5317,362.675" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="46.9577" x="257.8145" y="335.7472">unblock</text><!--MD5=[4d2bc5b9e47152e661298c7abd7751c2]
|
||||
link ISR to Waiter--><path d="M176.368,184.0597 C120.9999,194.273 50.6975,217.4667 14.7162,270.1767 C-26.8246,331.0289 75.5264,364.1508 157.7694,380.3931 " fill="none" id="ISR->Waiter" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><polygon fill="#8295A0" points="161.6602,381.1562,154.8806,376.4402,157.5427,380.3662,153.6166,383.0282,161.6602,381.1562" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="10.9009" lengthAdjust="spacingAndGlyphs" textLength="160.9978" x="15.5547" y="288.7392">restore selected context</text><!--MD5=[5e057b0a8dad3f09c9d5a69954f37c37]
|
||||
link Waiter to Evidence--><path d="M268.3883,425.2629 C278.2494,440.1719 289.9721,457.8817 298.9527,471.4659 " fill="none" id="Waiter->Evidence" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><polygon fill="#8295A0" points="301.1832,474.8452,299.8072,466.702,298.8659,471.3511,294.2168,470.4098,301.1832,474.8452" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><!--MD5=[e04e511a3d6ba16d5e8f40dc15b06440]
|
||||
link Stimulus to Evidence--><path d="M341.4662,80.6103 C358.7315,104.458 378.6382,139.5254 378.6382,174.3579 C378.6382,174.3579 378.6382,174.3579 378.6382,395.4531 C378.6382,425.9253 356.3753,454.0664 337.8186,472.2206 " fill="none" id="Stimulus->Evidence" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><polygon fill="#8295A0" points="334.8502,475.0632,342.6223,472.2705,337.88,472.1651,337.9854,467.4228,334.8502,475.0632" style="stroke: #8295A0; stroke-width: 0.8385300527860715;"/><!--MD5=[7cbb59bf83159d30751aec88f810183a]
|
||||
@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
|
||||
top to bottom direction
|
||||
title A7 RUNTIME — three stacks and context-selected return
|
||||
object "01 waiter TCB" as Waiter {
|
||||
priority = 3
|
||||
waiter_sp
|
||||
state: Blocked → Running
|
||||
}
|
||||
object "02 stimulus TCB" as Stimulus {
|
||||
priority = 2
|
||||
stimulus_sp
|
||||
interrupted after SET_IRQ
|
||||
}
|
||||
object "03 xISRStack" as ISR {
|
||||
isr_sp
|
||||
mcause = 0x8000000b
|
||||
source_after_clear = 0
|
||||
}
|
||||
object "04 binary semaphore" as Sem
|
||||
object "05 evidence[9]" as Evidence {
|
||||
E07 waiter before E08 stimulus
|
||||
}
|
||||
Stimulus - -> ISR : interrupt
|
||||
ISR - -> Sem : GiveFromISR
|
||||
Sem - -> Waiter : unblock
|
||||
ISR - -> Waiter : restore selected context
|
||||
Waiter - -> Evidence
|
||||
Stimulus - -> Evidence
|
||||
@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.0 KiB |
Reference in New Issue
Block a user