feat: publish FreeRTOS C FC04 card
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
@startuml
|
||||
!include card-uml-style.iuml
|
||||
scale 900 width
|
||||
left to right direction
|
||||
|
||||
class "01 PeriodicContext" as Periodic <<C struct>> {
|
||||
handle · created_handle
|
||||
phase
|
||||
initial_tick
|
||||
release_tick[3]
|
||||
entry_sp · stack range
|
||||
}
|
||||
|
||||
class "02 SuspendContext" as Suspend <<C struct>> {
|
||||
handle · created_handle
|
||||
phase
|
||||
resumed
|
||||
entry_sp
|
||||
}
|
||||
|
||||
class "03 ObserverContext" as Observer <<C struct>> {
|
||||
handle
|
||||
periodic_state : eTaskState
|
||||
suspend_state : eTaskState
|
||||
pass
|
||||
}
|
||||
|
||||
class "04 periodic timeline" as Timeline <<bounded record>> {
|
||||
t0
|
||||
t0 + 2
|
||||
t0 + 4
|
||||
t0 + 6
|
||||
}
|
||||
|
||||
Periodic --> Timeline : vTaskDelayUntil
|
||||
Observer --> Periodic : eTaskGetState
|
||||
Observer --> Suspend : eTaskGetState · vTaskResume
|
||||
Observer --> Timeline : verifies exact deltas
|
||||
@enduml
|
||||
@@ -0,0 +1,117 @@
|
||||
<?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="453.5936px" preserveAspectRatio="none" style="width:894px;height:453px;" version="1.1" viewBox="0 0 894 453" width="894.4099px" zoomAndPan="magnify"><defs/><g><!--MD5=[86b35a35deff3f53bdfe096e65e1dcc4]
|
||||
class Periodic--><rect fill="#F5F8FA" height="166.0486" id="Periodic" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="166.1047" x="413.6646" y="6.1012"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.9006" x="468.7666" y="23.0394">«C struct»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="136.5572" x="428.4383" y="45.813">01 PeriodicContext</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="414.4632" x2="578.9707" y1="57.4224" y2="57.4224"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="146.9388" x="423.2476" y="75.0446">handle · created_handle</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="31.9432" x="423.2476" y="96.7123">phase</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="76.6637" x="423.2476" y="118.3801">initial_tick</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="95.8296" x="423.2476" y="140.0478">release_tick[3]</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="140.5501" x="423.2476" y="161.7155">entry_sp · stack range</text><!--MD5=[fe4f93b87d8dddf11c9ebf60b1f7018c]
|
||||
class Suspend--><rect fill="#F5F8FA" height="144.3808" id="Suspend" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="166.1047" x="413.6646" y="200.6034"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.9006" x="468.7666" y="217.5416">«C struct»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="129.37" x="432.0319" y="240.3152">02 SuspendContext</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="414.4632" x2="578.9707" y1="251.9246" y2="251.9246"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="146.9388" x="423.2476" y="269.5468">handle · created_handle</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="31.9432" x="423.2476" y="291.2146">phase</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="44.7205" x="423.2476" y="312.8823">resumed</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="51.1091" x="423.2476" y="334.55">entry_sp</text><!--MD5=[d40932010816485ec57b44b6eea2392a]
|
||||
class Observer--><rect fill="#F5F8FA" height="144.3808" id="Observer" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="191.6593" x="4.7915" y="200.6034"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.9006" x="72.6708" y="217.5416">«C struct»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="136.5572" x="32.3425" y="240.3152">03 ObserverContext</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="5.5901" x2="195.6522" y1="251.9246" y2="251.9246"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="14.3744" y="269.5468">handle</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="172.4933" x="14.3744" y="291.2146">periodic_state : eTaskState</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="166.1047" x="14.3744" y="312.8823">suspend_state : eTaskState</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="25.5546" x="14.3744" y="334.55">pass</text><!--MD5=[bc85b0cffdc1196fa135ce200aaffd70]
|
||||
class Timeline--><rect fill="#F5F8FA" height="144.3808" id="Timeline" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="165.3061" x="720.3194" y="301.2245"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="89.441" x="758.252" y="318.1627">«bounded record»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="150.9317" x="727.5067" y="340.9363">04 periodic timeline</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="721.118" x2="884.827" y1="352.5458" y2="352.5458"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="12.7773" x="729.9024" y="370.1679">t0</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="729.9024" y="391.8357">t0 + 2</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="729.9024" y="413.5034">t0 + 4</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="729.9024" y="435.1711">t0 + 6</text><!--MD5=[b5317db61bfa9ffb7f1583a47e1bca56]
|
||||
link Periodic to Timeline--><path d="M580.1606,166.2405 C623.8669,207.0319 677.3239,256.9193 720.8385,297.5191 " fill="none" id="Periodic->Timeline" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="723.6016,300.0905,720.5128,292.8573,720.6773,297.3718,716.1628,297.5363,723.6016,300.0905" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="95.8296" x="602.1295" y="181.202">vTaskDelayUntil</text><!--MD5=[9a13c79469e182d9ac760982ce00a3f7]
|
||||
link Observer to Periodic--><path d="M196.6664,228.4499 C261.3514,198.3354 346.2245,158.8137 409.0648,129.5617 " fill="none" id="Observer->Periodic" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="412.4508,127.9805,404.587,128.1266,408.8327,129.6696,407.2897,133.9154,412.4508,127.9805" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="83.0524" x="263.5315" y="130.3963">eTaskGetState</text><!--MD5=[6337c7a371cd26c61b81731d2523cb3f]
|
||||
link Observer to Suspend--><path d="M196.6664,272.795 C261.2236,272.795 345.8891,272.795 408.6815,272.795 " fill="none" id="Observer->Suspend" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="412.339,272.795,405.1517,269.6007,408.3461,272.795,405.1517,275.9894,412.339,272.795" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="172.4933" x="218.811" y="264.8053">eTaskGetState · vTaskResume</text><!--MD5=[8f4095da67caa2e1eabf447bb271ea1c]
|
||||
link Observer to Timeline--><path d="M196.5546,315.8705 C257.2786,340.9618 338.4463,370.118 413.6646,382.9991 C486.4312,395.465 505.9645,384.5883 579.7693,382.9991 C624.4179,382.0408 674.0736,379.9965 715.1207,378.0399 " fill="none" id="Observer->Timeline" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="718.874,377.8563,711.5403,375.0144,714.8858,378.05,711.8502,381.3955,718.874,377.8563" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="134.1615" x="429.6362" y="375.0094">verifies exact deltas</text><!--MD5=[b8379206f304b13281e1570a39728778]
|
||||
@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
|
||||
left to right direction
|
||||
|
||||
class "01 PeriodicContext" as Periodic <<C struct>> {
|
||||
handle · created_handle
|
||||
phase
|
||||
initial_tick
|
||||
release_tick[3]
|
||||
entry_sp · stack range
|
||||
}
|
||||
|
||||
class "02 SuspendContext" as Suspend <<C struct>> {
|
||||
handle · created_handle
|
||||
phase
|
||||
resumed
|
||||
entry_sp
|
||||
}
|
||||
|
||||
class "03 ObserverContext" as Observer <<C struct>> {
|
||||
handle
|
||||
periodic_state : eTaskState
|
||||
suspend_state : eTaskState
|
||||
pass
|
||||
}
|
||||
|
||||
class "04 periodic timeline" as Timeline <<bounded record>> {
|
||||
t0
|
||||
t0 + 2
|
||||
t0 + 4
|
||||
t0 + 6
|
||||
}
|
||||
|
||||
Periodic - -> Timeline : vTaskDelayUntil
|
||||
Observer - -> Periodic : eTaskGetState
|
||||
Observer - -> Suspend : eTaskGetState · vTaskResume
|
||||
Observer - -> Timeline : verifies exact deltas
|
||||
@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: 11 KiB |
@@ -0,0 +1,26 @@
|
||||
@startuml
|
||||
!include card-uml-style.iuml
|
||||
scale 900 width
|
||||
|
||||
participant main
|
||||
participant periodic
|
||||
participant suspend_target
|
||||
participant observer
|
||||
participant "FreeRTOS scheduler" as Scheduler
|
||||
|
||||
main -> main : 01 configuration committed
|
||||
main -> Scheduler : 02 create three tasks and start
|
||||
Scheduler -> periodic : 03 highest Ready task runs
|
||||
periodic -> Scheduler : vTaskDelayUntil(t0 + 2)
|
||||
Scheduler -> suspend_target : self-suspend
|
||||
Scheduler -> observer : 04 sees Blocked + Suspended
|
||||
observer -> Scheduler : vTaskResume(suspend_target)
|
||||
Scheduler -> suspend_target : 05 resumed; self-delete
|
||||
Scheduler -> periodic : 06 release at t0 + 2
|
||||
periodic -> Scheduler : vTaskDelayUntil(t0 + 4)
|
||||
Scheduler -> periodic : 07 release at t0 + 4
|
||||
periodic -> Scheduler : vTaskDelayUntil(t0 + 6)
|
||||
Scheduler -> periodic : 08 release at t0 + 6
|
||||
periodic -> Scheduler : 09 clear handle; self-delete
|
||||
Scheduler -> observer : 10 verify timeline and PASS
|
||||
@enduml
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,27 @@
|
||||
@startuml
|
||||
!include card-uml-style.iuml
|
||||
scale 900 width
|
||||
left to right direction
|
||||
|
||||
state "01 Ready" as Ready
|
||||
state "02 Running" as Running
|
||||
state "03 Blocked\nuntil absolute wake tick" as Blocked
|
||||
state "04 Suspended\nno wake tick" as Suspended
|
||||
state "05 Resumed Ready" as Resumed
|
||||
state "06 Completed\nbefore self-delete" as Completed
|
||||
state "07 Deleted\nTCB cleanup deferred" as Deleted
|
||||
|
||||
Ready --> Running : selected
|
||||
Running --> Blocked : vTaskDelayUntil
|
||||
Blocked --> Ready : wake tick
|
||||
Running --> Suspended : vTaskSuspend(NULL)
|
||||
Suspended --> Resumed : vTaskResume(handle)
|
||||
Resumed --> Running : selected
|
||||
Running --> Completed : application record
|
||||
Completed --> Deleted : vTaskDelete(NULL)
|
||||
|
||||
note bottom of Blocked
|
||||
Blocked has a time/event condition.
|
||||
Suspended has no automatic wake condition.
|
||||
end note
|
||||
@enduml
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,40 @@
|
||||
@startuml
|
||||
!include card-uml-style.iuml
|
||||
scale 900 width
|
||||
left to right direction
|
||||
|
||||
class "01 public state evidence" as Public <<application>> {
|
||||
eTaskGetState(periodic) = eBlocked
|
||||
eTaskGetState(target) = eSuspended
|
||||
}
|
||||
|
||||
class "02 periodic task runtime" as Periodic <<runtime>> {
|
||||
handle / TCB
|
||||
task stack range
|
||||
PC · SP
|
||||
}
|
||||
|
||||
class "03 absolute wake timeline" as Wake <<runtime>> {
|
||||
initial_tick
|
||||
release = 2 · 4 · 6
|
||||
exact delta = 2
|
||||
}
|
||||
|
||||
class "04 suspended task runtime" as Suspend <<runtime>> {
|
||||
handle / TCB
|
||||
no delayed-list wake tick
|
||||
resumed = 1
|
||||
}
|
||||
|
||||
class "05 forensic completion" as Evidence <<evidence>> {
|
||||
public handles = NULL
|
||||
contexts remain in static storage
|
||||
source blob · ELF hash · PASS
|
||||
}
|
||||
|
||||
Public --> Periodic
|
||||
Public --> Suspend
|
||||
Periodic --> Wake
|
||||
Periodic --> Evidence
|
||||
Suspend --> Evidence
|
||||
@enduml
|
||||
@@ -0,0 +1,120 @@
|
||||
<?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="346.0805px" preserveAspectRatio="none" style="width:893px;height:346px;" version="1.1" viewBox="0 0 893 346" width="893.3263px" zoomAndPan="magnify"><defs/><g><!--MD5=[3833dfc58284d688f88001bd4346281f]
|
||||
class Public--><rect fill="#F5F8FA" height="120.6336" id="Public" style="stroke: #607985; stroke-width: 1.430084745762712;" width="282.2034" x="5.7203" y="111.4513"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="86.7585" x="103.4428" y="131.6731">«application»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="214.5127" x="39.5657" y="158.8615">01 public state evidence</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="6.6737" x2="286.9703" y1="172.7215" y2="172.7215"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="259.322" x="17.161" y="193.7598">eTaskGetState(periodic) = eBlocked</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="259.322" x="17.161" y="219.628">eTaskGetState(target) = eSuspended</text><!--MD5=[86b35a35deff3f53bdfe096e65e1dcc4]
|
||||
class Periodic--><rect fill="#F5F8FA" height="146.5018" id="Periodic" style="stroke: #607985; stroke-width: 1.430084745762712;" width="231.6737" x="332.2564" y="7.9513"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="60.0636" x="418.0614" y="28.1731">«runtime»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="214.5127" x="340.8369" y="55.3615">02 periodic task runtime</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="333.2097" x2="562.9767" y1="69.2215" y2="69.2215"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="91.5254" x="343.697" y="90.2598">handle / TCB</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="122.0339" x="343.697" y="116.128">task stack range</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="53.3898" x="343.697" y="141.9961">PC · SP</text><!--MD5=[e1eb4ff42ad6fe6744f3d2d780dcb722]
|
||||
class Wake--><rect fill="#F5F8FA" height="146.5018" id="Wake" style="stroke: #607985; stroke-width: 1.430084745762712;" width="240.2542" x="625.4237" y="7.9513"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="60.0636" x="715.5191" y="28.1731">«runtime»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="223.0932" x="634.0042" y="55.3615">03 absolute wake timeline</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="626.3771" x2="864.7246" y1="69.2215" y2="69.2215"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="91.5254" x="636.8644" y="90.2598">initial_tick</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="144.9153" x="636.8644" y="116.128">release = 2 · 4 · 6</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="114.4068" x="636.8644" y="141.9961">exact delta = 2</text><!--MD5=[fe4f93b87d8dddf11c9ebf60b1f7018c]
|
||||
class Suspend--><rect fill="#F5F8FA" height="146.5018" id="Suspend" style="stroke: #607985; stroke-width: 1.430084745762712;" width="240.2542" x="327.9661" y="189.0953"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="60.0636" x="418.0614" y="209.3172">«runtime»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="223.0932" x="336.5466" y="236.5055">04 suspended task runtime</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="328.9195" x2="567.2669" y1="250.3655" y2="250.3655"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="91.5254" x="339.4068" y="271.4039">handle / TCB</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="190.678" x="339.4068" y="297.272">no delayed-list wake tick</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="83.8983" x="339.4068" y="323.1402">resumed = 1</text><!--MD5=[13f56afd7aace6dccdfaaac41cf97a6a]
|
||||
class Evidence--><rect fill="#F5F8FA" height="146.5018" id="Evidence" style="stroke: #607985; stroke-width: 1.430084745762712;" width="274.5763" x="608.2627" y="189.0953"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="66.7373" x="712.1822" y="209.3172">«evidence»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="197.3517" x="646.875" y="236.5055">05 forensic completion</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="609.2161" x2="881.8856" y1="250.3655" y2="250.3655"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="160.1695" x="619.7034" y="271.4039">public handles = NULL</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="251.6949" x="619.7034" y="297.272">contexts remain in static storage</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="221.1864" x="619.7034" y="323.1402">source blob · ELF hash · PASS</text><!--MD5=[8014a0f10d1c54cd49a04ba349132a69]
|
||||
link Public to Periodic--><path d="M288.2574,129.2701 C300.8994,125.447 313.6367,121.5858 326.0975,117.8199 " fill="none" id="Public->Periodic" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="330.4163,116.5138,321.1002,115.3394,325.8523,117.8898,323.3019,122.6418,330.4163,116.5138" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[17e999d6446600b847a6cb8cb5f374d4]
|
||||
link Public to Suspend--><path d="M288.2574,214.2744 C299.5074,217.678 310.8337,221.1006 321.9693,224.4756 " fill="none" id="Public->Suspend" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="326.393,225.8104,319.2786,219.6823,321.829,224.4344,317.0769,226.9848,326.393,225.8104" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[de7239d11f85c01a3917f6e65c696cec]
|
||||
link Periodic to Wake--><path d="M564.1589,81.2002 C582.1494,81.2002 600.8072,81.2002 619.0074,81.2002 " fill="none" id="Periodic->Wake" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="623.7267,81.2002,615.1462,77.3867,618.9597,81.2002,615.1462,85.0138,623.7267,81.2002" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[80b41d776a842d71f9fe5b1fa56b71b9]
|
||||
link Periodic to Evidence--><path d="M564.1589,151.7511 C582.2352,162.8294 600.9979,174.3273 619.2839,185.5392 " fill="none" id="Periodic->Evidence" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="623.2023,187.9417,617.8745,180.2098,619.1365,185.4533,613.893,186.7152,623.2023,187.9417" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[45096a90a3324b6007814ebd88be5d10]
|
||||
link Suspend to Evidence--><path d="M568.411,262.3443 C579.3559,262.3443 590.5201,262.3443 601.6462,262.3443 " fill="none" id="Suspend->Evidence" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="606.3845,262.3443,597.804,258.5307,601.6176,262.3443,597.804,266.1578,606.3845,262.3443" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[51ed389d12f971a7aef6fd7463f99a8f]
|
||||
@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
|
||||
left to right direction
|
||||
|
||||
class "01 public state evidence" as Public <<application>> {
|
||||
eTaskGetState(periodic) = eBlocked
|
||||
eTaskGetState(target) = eSuspended
|
||||
}
|
||||
|
||||
class "02 periodic task runtime" as Periodic <<runtime>> {
|
||||
handle / TCB
|
||||
task stack range
|
||||
PC · SP
|
||||
}
|
||||
|
||||
class "03 absolute wake timeline" as Wake <<runtime>> {
|
||||
initial_tick
|
||||
release = 2 · 4 · 6
|
||||
exact delta = 2
|
||||
}
|
||||
|
||||
class "04 suspended task runtime" as Suspend <<runtime>> {
|
||||
handle / TCB
|
||||
no delayed-list wake tick
|
||||
resumed = 1
|
||||
}
|
||||
|
||||
class "05 forensic completion" as Evidence <<evidence>> {
|
||||
public handles = NULL
|
||||
contexts remain in static storage
|
||||
source blob · ELF hash · PASS
|
||||
}
|
||||
|
||||
Public - -> Periodic
|
||||
Public - -> Suspend
|
||||
Periodic - -> Wake
|
||||
Periodic - -> Evidence
|
||||
Suspend - -> 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: 11 KiB |
Reference in New Issue
Block a user