[FE training-materials-updates] Kernel slide: improve wait_event explanations
Michael Opdenacker
michael.opdenacker at free-electrons.com
Sat Feb 1 17:06:24 CET 2014
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=76b8adcf2ff10e7884fa4bbda3319aed59450445
>---------------------------------------------------------------
commit 76b8adcf2ff10e7884fa4bbda3319aed59450445
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date: Sat Feb 1 16:16:18 2014 +0100
Kernel slide: improve wait_event explanations
- Remove the kernel code for wait_event
(unfortunately no longer as readable as it once was)
- Replace it by a diagram, easier to understand
Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>
>---------------------------------------------------------------
76b8adcf2ff10e7884fa4bbda3319aed59450445
.../kernel-driver-development-sleeping.tex | 39 +-
.../wait-event.dia} | 673 ++++++++++----------
2 files changed, 344 insertions(+), 368 deletions(-)
diff --git a/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex b/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
index eb509fa..9d90490 100644
--- a/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
+++ b/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
@@ -93,7 +93,7 @@ if (ret)
\frametitle{Waking up!}
\begin{itemize}
\item Typically done by interrupt handlers when data sleeping
- processes are waiting for becomes available.
+ processes are waiting for become available.
\begin{itemize}
\item \code{wake_up(&queue);}
\begin{itemize}
@@ -133,39 +133,26 @@ if (ret)
\end{frame}
\begin{frame}[fragile]
- \frametitle{Sleeping and Waking up - Implementation 1/2}
- \begin{itemize}
- \item The scheduler doesn't keep evaluating the sleeping condition!
-\begin{minted}{c}
-#define __wait_event(wq, condition) \
- do { \
- DEFINE_WAIT(__wait); \
- \
- for (;;) { \
- prepare_to_wait(&wq, &__wait, \
- TASK_UNINTERRUPTIBLE); \
- if (condition) \
- break; \
- schedule(); \
- } \
- finish_wait(&wq, &__wait); \
-} while (0)
-\end{minted}
-\end{itemize}
+ \frametitle{Sleeping and waking up - Implementation 1/2}
+ \begin{center}
+ \includegraphics[height=0.8\textheight]{slides/kernel-driver-development-sleeping/wait-event.pdf}\\
+ \end{center}
\end{frame}
\begin{frame}[fragile]
- \frametitle{Sleeping and Waking up - Implementation 2/2}
+ \frametitle{Sleeping and waking up - Implementation 2/2}
+ The scheduler doesn't keep evaluating the sleeping condition!\\
\begin{itemize}
- \item \mint{c}+wait_event_interruptible(queue, condition);+
+ \item \mint{c}+wait_event(queue, condition);+
\begin{itemize}
- \item The process is put in the \ksym{TASK_INTERRUPTIBLE} state.
+ \item The process is put in the \ksym{TASK_UNINTERRUPTIBLE} state.
\end{itemize}
- \item \mint{c}+wake_up_interruptible(&queue);+
+ \item \mint{c}+wake_up(&queue);+
\begin{itemize}
\item All processes waiting in \code{queue} are woken up, so they get
- scheduled later and have the opportunity to reevaluate the
- condition.
+ scheduled later and have the opportunity to evaluate the
+ condition again and go back to sleep if it is not met.
\end{itemize}
\end{itemize}
+ See \kpath{include/linux/wait.h} for implementation details.
\end{frame}
diff --git a/slides/kernel-init-content/kernel-initialization.dia b/slides/kernel-driver-development-sleeping/wait-event.dia
similarity index 68%
copy from slides/kernel-init-content/kernel-initialization.dia
copy to slides/kernel-driver-development-sleeping/wait-event.dia
index ed98190..6b8dfd0 100644
--- a/slides/kernel-init-content/kernel-initialization.dia
+++ b/slides/kernel-driver-development-sleeping/wait-event.dia
@@ -63,83 +63,63 @@
</dia:attribute>
</dia:diagramdata>
<dia:layer name="Arrière-plan" visible="true" active="true">
- <dia:object type="Standard - Box" version="0" id="O0">
+ <dia:object type="Geometric - Diamond" version="1" id="O0">
<dia:attribute name="obj_pos">
- <dia:point val="4,4"/>
+ <dia:point val="3,13"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="3.95,3.95;11.05,6.05"/>
+ <dia:rectangle val="2.8882,12.9441;11.1118,17.0559"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="4,4"/>
+ <dia:point val="3,13"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="7"/>
+ <dia:real val="8"/>
</dia:attribute>
<dia:attribute name="elem_height">
- <dia:real val="2"/>
+ <dia:real val="4"/>
</dia:attribute>
- <dia:attribute name="border_width">
+ <dia:attribute name="line_width">
<dia:real val="0.10000000149011612"/>
</dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#868686"/>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
</dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#e5e5e5"/>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#fff8a8"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
</dia:attribute>
- </dia:object>
- <dia:object type="Standard - Text" version="1" id="O1">
- <dia:attribute name="obj_pos">
- <dia:point val="7.5,5"/>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ <dia:real val="1"/>
</dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="5.74875,4.62625;9.25125,5.37375"/>
+ <dia:attribute name="flip_horizontal">
+ <dia:boolean val="false"/>
</dia:attribute>
- <dia:attribute name="text">
- <dia:composite type="text">
- <dia:attribute name="string">
- <dia:string>#Bootloader#</dia:string>
- </dia:attribute>
- <dia:attribute name="font">
- <dia:font family="sans" style="0" name="Helvetica"/>
- </dia:attribute>
- <dia:attribute name="height">
- <dia:real val="0.80000000000000004"/>
- </dia:attribute>
- <dia:attribute name="pos">
- <dia:point val="7.5,5.22125"/>
- </dia:attribute>
- <dia:attribute name="color">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="alignment">
- <dia:enum val="1"/>
- </dia:attribute>
- </dia:composite>
+ <dia:attribute name="flip_vertical">
+ <dia:boolean val="false"/>
</dia:attribute>
- <dia:attribute name="valign">
- <dia:enum val="2"/>
+ <dia:attribute name="subscale">
+ <dia:real val="1"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="0" to="O0" connection="8"/>
- </dia:connections>
</dia:object>
- <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:object type="Standard - Box" version="0" id="O1">
<dia:attribute name="obj_pos">
- <dia:point val="4,8"/>
+ <dia:point val="3,5"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="3.95,7.95;11.05,10.05"/>
+ <dia:rectangle val="2.95,4.95;11.05,7.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="4,8"/>
+ <dia:point val="3,5"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="7"/>
+ <dia:real val="8"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="2"/>
@@ -157,18 +137,17 @@
<dia:boolean val="true"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O3">
+ <dia:object type="Standard - Text" version="1" id="O2">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,9"/>
+ <dia:point val="7,6"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="4.19125,8.22625;10.8087,9.77375"/>
+ <dia:rectangle val="5.00625,5.62625;8.99375,6.37375"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#head.o
-uncompression code#</dia:string>
+ <dia:string>#wait_event()#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -177,7 +156,7 @@ uncompression code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="7.5,8.82125"/>
+ <dia:point val="7,6.22125"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -191,49 +170,21 @@ uncompression code#</dia:string>
<dia:enum val="2"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O2" connection="8"/>
+ <dia:connection handle="0" to="O1" connection="8"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O4">
+ <dia:object type="Standard - Box" version="0" id="O3">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,6"/>
+ <dia:point val="3,9"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="7.1382,5.95;7.8618,8.1118"/>
- </dia:attribute>
- <dia:attribute name="conn_endpoints">
- <dia:point val="7.5,6"/>
- <dia:point val="7.5,8"/>
- </dia:attribute>
- <dia:attribute name="numcp">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:attribute name="end_arrow">
- <dia:enum val="22"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_length">
- <dia:real val="0.5"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_width">
- <dia:real val="0.5"/>
- </dia:attribute>
- <dia:connections>
- <dia:connection handle="0" to="O0" connection="6"/>
- <dia:connection handle="1" to="O2" connection="1"/>
- </dia:connections>
- </dia:object>
- <dia:object type="Standard - Box" version="0" id="O5">
- <dia:attribute name="obj_pos">
- <dia:point val="4,12"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="3.95,11.95;11.05,14.05"/>
+ <dia:rectangle val="2.95,8.95;11.05,11.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="4,12"/>
+ <dia:point val="3,9"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="7"/>
+ <dia:real val="8"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="2"/>
@@ -251,18 +202,18 @@ uncompression code#</dia:string>
<dia:boolean val="true"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O6">
+ <dia:object type="Standard - Text" version="1" id="O4">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,13"/>
+ <dia:point val="7,10"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="4.73875,12.2263;10.2613,13.7737"/>
+ <dia:rectangle val="3.06859,9.19822;10.9501,10.8018"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#head.o
-main kernel code#</dia:string>
+ <dia:string>#Put task in state
+TASK_UNINTERRUPTIBLE#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -271,7 +222,7 @@ main kernel code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="7.5,12.8213"/>
+ <dia:point val="7,9.81191"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -285,77 +236,21 @@ main kernel code#</dia:string>
<dia:enum val="2"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O5" connection="8"/>
+ <dia:connection handle="0" to="O3" connection="8"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O7">
+ <dia:object type="Standard - Text" version="1" id="O5">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,10.0496"/>
+ <dia:point val="7,15"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="7.1382,9.99956;7.8618,12.1118"/>
- </dia:attribute>
- <dia:attribute name="conn_endpoints">
- <dia:point val="7.5,10.0496"/>
- <dia:point val="7.5,12"/>
- </dia:attribute>
- <dia:attribute name="numcp">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:attribute name="end_arrow">
- <dia:enum val="22"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_length">
- <dia:real val="0.5"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_width">
- <dia:real val="0.5"/>
- </dia:attribute>
- <dia:connections>
- <dia:connection handle="0" to="O2" connection="8"/>
- <dia:connection handle="1" to="O5" connection="1"/>
- </dia:connections>
- </dia:object>
- <dia:object type="Standard - Box" version="0" id="O8">
- <dia:attribute name="obj_pos">
- <dia:point val="4,16"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="3.95,15.95;11.05,18.05"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="4,16"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="7"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="2"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#5cacff"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#add8e6"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Standard - Text" version="1" id="O9">
- <dia:attribute name="obj_pos">
- <dia:point val="7.5,17"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="5.61,16.6262;9.39,17.3737"/>
+ <dia:rectangle val="5.52,14.2263;8.48,15.7737"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#start_kernel#</dia:string>
+ <dia:string>#Evaluate
+condition#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -364,7 +259,7 @@ main kernel code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="7.5,17.2212"/>
+ <dia:point val="7,14.8213"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -378,21 +273,21 @@ main kernel code#</dia:string>
<dia:enum val="2"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O8" connection="8"/>
+ <dia:connection handle="0" to="O0" connection="8"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Box" version="0" id="O10">
+ <dia:object type="Standard - Box" version="0" id="O6">
<dia:attribute name="obj_pos">
- <dia:point val="4,20"/>
+ <dia:point val="3,1"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="3.95,19.95;11.05,22.05"/>
+ <dia:rectangle val="2.95,0.95;11.05,3.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="4,20"/>
+ <dia:point val="3,1"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="7"/>
+ <dia:real val="8"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="2"/>
@@ -410,17 +305,18 @@ main kernel code#</dia:string>
<dia:boolean val="true"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O11">
+ <dia:object type="Standard - Text" version="1" id="O7">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,21"/>
+ <dia:point val="7,2"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="6.2225,20.6262;8.7775,21.3737"/>
+ <dia:rectangle val="3.33531,1.22625;10.6647,2.77375"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#rest_init#</dia:string>
+ <dia:string>#Task in TASK_RUNNING
+state#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -429,7 +325,7 @@ main kernel code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="7.5,21.2212"/>
+ <dia:point val="7,1.82125"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -443,19 +339,19 @@ main kernel code#</dia:string>
<dia:enum val="2"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O10" connection="8"/>
+ <dia:connection handle="0" to="O6" connection="8"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O12">
+ <dia:object type="Standard - Line" version="0" id="O8">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,14"/>
+ <dia:point val="7,-1"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="7.1382,13.95;7.8618,16.1118"/>
+ <dia:rectangle val="6.6382,-1.05;7.3618,1.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="7.5,14"/>
- <dia:point val="7.5,16"/>
+ <dia:point val="7,-1"/>
+ <dia:point val="7,1"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -470,20 +366,19 @@ main kernel code#</dia:string>
<dia:real val="0.5"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O5" connection="6"/>
- <dia:connection handle="1" to="O8" connection="1"/>
+ <dia:connection handle="1" to="O6" connection="1"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O13">
+ <dia:object type="Standard - Line" version="0" id="O9">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,18"/>
+ <dia:point val="7,3"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="7.1382,17.95;7.8618,20.1118"/>
+ <dia:rectangle val="6.6382,2.95;7.3618,5.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="7.5,18"/>
- <dia:point val="7.5,20"/>
+ <dia:point val="7,3"/>
+ <dia:point val="7,5"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -498,59 +393,51 @@ main kernel code#</dia:string>
<dia:real val="0.5"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O8" connection="6"/>
- <dia:connection handle="1" to="O10" connection="1"/>
+ <dia:connection handle="0" to="O6" connection="6"/>
+ <dia:connection handle="1" to="O1" connection="1"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Box" version="0" id="O14">
+ <dia:object type="Standard - Line" version="0" id="O10">
<dia:attribute name="obj_pos">
- <dia:point val="18,14"/>
+ <dia:point val="7,7"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="17.95,13.95;25.05,16.05"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="18,14"/>
+ <dia:rectangle val="6.6382,6.95;7.3618,9.1118"/>
</dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="7"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="2"/>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="7,7"/>
+ <dia:point val="7,9"/>
</dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
</dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#5cacff"/>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
</dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#add8e6"/>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
</dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
</dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O1" connection="6"/>
+ <dia:connection handle="1" to="O3" connection="1"/>
+ </dia:connections>
</dia:object>
- <dia:object type="Standard - ZigZagLine" version="1" id="O15">
+ <dia:object type="Standard - Line" version="0" id="O11">
<dia:attribute name="obj_pos">
- <dia:point val="11,21"/>
+ <dia:point val="7,11"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="10.95,14.6382;18.1118,21.05"/>
- </dia:attribute>
- <dia:attribute name="orth_points">
- <dia:point val="11,21"/>
- <dia:point val="14.5,21"/>
- <dia:point val="14.5,15"/>
- <dia:point val="18,15"/>
+ <dia:rectangle val="6.6382,10.95;7.3618,13.1118"/>
</dia:attribute>
- <dia:attribute name="orth_orient">
- <dia:enum val="0"/>
- <dia:enum val="1"/>
- <dia:enum val="0"/>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="7,11"/>
+ <dia:point val="7,13"/>
</dia:attribute>
- <dia:attribute name="autorouting">
- <dia:boolean val="true"/>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
</dia:attribute>
<dia:attribute name="end_arrow">
<dia:enum val="22"/>
@@ -562,22 +449,22 @@ main kernel code#</dia:string>
<dia:real val="0.5"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O10" connection="4"/>
- <dia:connection handle="1" to="O14" connection="3"/>
+ <dia:connection handle="0" to="O3" connection="6"/>
+ <dia:connection handle="1" to="O0" connection="5"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Box" version="0" id="O16">
+ <dia:object type="Standard - Box" version="0" id="O12">
<dia:attribute name="obj_pos">
- <dia:point val="18,18"/>
+ <dia:point val="15,14"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="17.95,17.95;25.05,20.05"/>
+ <dia:rectangle val="14.95,13.95;23.05,16.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="18,18"/>
+ <dia:point val="15,14"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="7"/>
+ <dia:real val="8"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="2"/>
@@ -595,17 +482,17 @@ main kernel code#</dia:string>
<dia:boolean val="true"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O17">
+ <dia:object type="Standard - Text" version="1" id="O13">
<dia:attribute name="obj_pos">
- <dia:point val="21.5,19"/>
+ <dia:point val="19,15"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="20.1438,18.6262;22.8562,19.3737"/>
+ <dia:rectangle val="17.315,14.6263;20.685,15.3738"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#init_post#</dia:string>
+ <dia:string>#schedule()#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -614,7 +501,7 @@ main kernel code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="21.5,19.2212"/>
+ <dia:point val="19,15.2213"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -628,20 +515,117 @@ main kernel code#</dia:string>
<dia:enum val="2"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O16" connection="8"/>
+ <dia:connection handle="0" to="O12" connection="8"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O18">
+ <dia:group>
+ <dia:object type="Standard - Box" version="0" id="O14">
+ <dia:attribute name="obj_pos">
+ <dia:point val="3,23"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.95,22.95;11.05,25.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="3,23"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="8"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#5cacff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#add8e6"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O15">
+ <dia:attribute name="obj_pos">
+ <dia:point val="7,24"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="3.89922,23.6262;10.1008,24.3737"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#Continue execution#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="7,24.2212"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O14" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ </dia:group>
+ <dia:object type="Standard - Box" version="0" id="O16">
<dia:attribute name="obj_pos">
- <dia:point val="21.5,15"/>
+ <dia:point val="3,19"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="19.8487,14.6263;23.1512,15.3738"/>
+ <dia:rectangle val="2.95,18.95;11.05,21.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="3,19"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="8"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#5cacff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#add8e6"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O17">
+ <dia:attribute name="obj_pos">
+ <dia:point val="7,20"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="4.40813,19.2263;9.59187,20.7737"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#kernel_init#</dia:string>
+ <dia:string>#Put task in state
+TASK_RUNNING#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -650,7 +634,7 @@ main kernel code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="21.5,15.2213"/>
+ <dia:point val="7,19.8212"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -664,19 +648,19 @@ main kernel code#</dia:string>
<dia:enum val="2"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O14" connection="8"/>
+ <dia:connection handle="0" to="O16" connection="8"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O19">
+ <dia:object type="Standard - Line" version="0" id="O18">
<dia:attribute name="obj_pos">
- <dia:point val="21.5,16"/>
+ <dia:point val="7,17"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="21.1382,15.95;21.8618,18.1118"/>
+ <dia:rectangle val="6.6382,16.95;7.3618,19.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="21.5,16"/>
- <dia:point val="21.5,18"/>
+ <dia:point val="7,17"/>
+ <dia:point val="7,19"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -691,22 +675,78 @@ main kernel code#</dia:string>
<dia:real val="0.5"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O14" connection="6"/>
+ <dia:connection handle="0" to="O0" connection="6"/>
<dia:connection handle="1" to="O16" connection="1"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Box" version="0" id="O20">
+ <dia:object type="Standard - Line" version="0" id="O19">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11,15"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.95,14.6382;15.1118,15.3618"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="11,15"/>
+ <dia:point val="15,15"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="7"/>
+ <dia:connection handle="1" to="O12" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O20">
+ <dia:attribute name="obj_pos">
+ <dia:point val="7,21"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="6.6382,20.95;7.3618,23.1118"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="7,21"/>
+ <dia:point val="7,23"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O16" connection="6"/>
+ <dia:connection handle="1" to="O14" connection="1"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O21">
<dia:attribute name="obj_pos">
- <dia:point val="31,18"/>
+ <dia:point val="15,5"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="30.95,17.95;38.05,20.05"/>
+ <dia:rectangle val="14.95,4.95;23.05,7.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="31,18"/>
+ <dia:point val="15,5"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="7"/>
+ <dia:real val="8"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="2"/>
@@ -715,26 +755,27 @@ main kernel code#</dia:string>
<dia:real val="0.10000000149011612"/>
</dia:attribute>
<dia:attribute name="border_color">
- <dia:color val="#d9cb2f"/>
+ <dia:color val="#6a8954"/>
</dia:attribute>
<dia:attribute name="inner_color">
- <dia:color val="#fff8a8"/>
+ <dia:color val="#c5e387"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O21">
+ <dia:object type="Standard - Text" version="1" id="O22">
<dia:attribute name="obj_pos">
- <dia:point val="34.5,19"/>
+ <dia:point val="19,6"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="32.6638,18.6262;36.3362,19.3737"/>
+ <dia:rectangle val="16.465,5.22625;21.535,6.77375"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#init process#</dia:string>
+ <dia:string>#Something runs
+wake_up()#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -743,7 +784,7 @@ main kernel code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="34.5,19.2212"/>
+ <dia:point val="19,5.82125"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -757,23 +798,26 @@ main kernel code#</dia:string>
<dia:enum val="2"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O20" connection="8"/>
+ <dia:connection handle="0" to="O21" connection="8"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O22">
+ <dia:object type="Standard - Line" version="0" id="O23">
<dia:attribute name="obj_pos">
- <dia:point val="25,19"/>
+ <dia:point val="19,14"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="24.95,18.6382;31.1118,19.3618"/>
+ <dia:rectangle val="18.6382,6.8882;19.3618,14.05"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="25,19"/>
- <dia:point val="31,19"/>
+ <dia:point val="19,14"/>
+ <dia:point val="19,7"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
</dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="4"/>
+ </dia:attribute>
<dia:attribute name="end_arrow">
<dia:enum val="22"/>
</dia:attribute>
@@ -784,50 +828,21 @@ main kernel code#</dia:string>
<dia:real val="0.5"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O16" connection="4"/>
- <dia:connection handle="1" to="O20" connection="3"/>
+ <dia:connection handle="0" to="O12" connection="1"/>
+ <dia:connection handle="1" to="O21" connection="6"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Box" version="0" id="O23">
- <dia:attribute name="obj_pos">
- <dia:point val="31,23"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="30.95,22.95;38.05,25.05"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="31,23"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="7"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="2"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#5cacff"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#add8e6"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
<dia:object type="Standard - Text" version="1" id="O24">
<dia:attribute name="obj_pos">
- <dia:point val="34.5,24"/>
+ <dia:point val="22,11"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="33.1788,23.6262;35.8212,24.3737"/>
+ <dia:rectangle val="20.6137,10.6263;23.3863,11.3738"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#cpu_idle#</dia:string>
+ <dia:string>#Sleeping#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -836,7 +851,7 @@ main kernel code#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="34.5,24.2212"/>
+ <dia:point val="22,11.2213"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -849,21 +864,18 @@ main kernel code#</dia:string>
<dia:attribute name="valign">
<dia:enum val="2"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="0" to="O23" connection="8"/>
- </dia:connections>
</dia:object>
<dia:object type="Standard - ZigZagLine" version="1" id="O25">
<dia:attribute name="obj_pos">
- <dia:point val="7.5,22"/>
+ <dia:point val="19,5"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="7.45,21.95;31.1118,24.3618"/>
+ <dia:rectangle val="10.8882,1.6382;19.05,5.05"/>
</dia:attribute>
<dia:attribute name="orth_points">
- <dia:point val="7.5,22"/>
- <dia:point val="7.5,24"/>
- <dia:point val="31,24"/>
+ <dia:point val="19,5"/>
+ <dia:point val="19,2"/>
+ <dia:point val="11,2"/>
</dia:attribute>
<dia:attribute name="orth_orient">
<dia:enum val="1"/>
@@ -882,43 +894,21 @@ main kernel code#</dia:string>
<dia:real val="0.5"/>
</dia:attribute>
<dia:connections>
- <dia:connection handle="0" to="O10" connection="6"/>
- <dia:connection handle="1" to="O23" connection="3"/>
+ <dia:connection handle="0" to="O21" connection="1"/>
+ <dia:connection handle="1" to="O6" connection="4"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O26">
- <dia:attribute name="obj_pos">
- <dia:point val="28,6"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="27.95,5.95;28.05,22.05"/>
- </dia:attribute>
- <dia:attribute name="conn_endpoints">
- <dia:point val="28,6"/>
- <dia:point val="28,22"/>
- </dia:attribute>
- <dia:attribute name="numcp">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="1"/>
- </dia:attribute>
- <dia:attribute name="dashlength">
- <dia:real val="0.50000000000000011"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Standard - Text" version="1" id="O27">
+ <dia:object type="Standard - Text" version="1" id="O26">
<dia:attribute name="obj_pos">
- <dia:point val="26,7"/>
+ <dia:point val="13,16"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="22.1,6.405;26,7.9525"/>
+ <dia:rectangle val="12.2387,15.6263;13.7613,16.3738"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#System
-Initialization#</dia:string>
+ <dia:string>#false#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -927,32 +917,31 @@ Initialization#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="26,7"/>
+ <dia:point val="13,16.2213"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
</dia:attribute>
<dia:attribute name="alignment">
- <dia:enum val="2"/>
+ <dia:enum val="1"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
<dia:attribute name="valign">
- <dia:enum val="3"/>
+ <dia:enum val="2"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O28">
+ <dia:object type="Standard - Text" version="1" id="O27">
<dia:attribute name="obj_pos">
- <dia:point val="30,7"/>
+ <dia:point val="9,18"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="30,6.38631;33.0937,7.98988"/>
+ <dia:rectangle val="8.34375,17.6262;9.65625,18.3737"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#System
-operation#</dia:string>
+ <dia:string>#true#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
@@ -961,18 +950,18 @@ operation#</dia:string>
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="30,7"/>
+ <dia:point val="9,18.2212"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
</dia:attribute>
<dia:attribute name="alignment">
- <dia:enum val="0"/>
+ <dia:enum val="1"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
<dia:attribute name="valign">
- <dia:enum val="3"/>
+ <dia:enum val="2"/>
</dia:attribute>
</dia:object>
</dia:layer>
More information about the training-materials-updates
mailing list