[FE training-materials-updates] Deadlocks: improve description
Michael Opdenacker
michael.opdenacker at free-electrons.com
Sat Dec 10 06:06:55 CET 2016
Repository : git://git.free-electrons.com/training-materials.git
On branch : sysdev-4d
Link : http://git.free-electrons.com/training-materials/commit/?id=988206009a8a3d60d0e37f246c7175c0db9c4449
>---------------------------------------------------------------
commit 988206009a8a3d60d0e37f246c7175c0db9c4449
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date: Sat Dec 10 06:06:55 2016 +0100
Deadlocks: improve description
Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>
>---------------------------------------------------------------
988206009a8a3d60d0e37f246c7175c0db9c4449
.../deadlock-same-lock.dia | 175 +++++++++++--
.../deadlock-two-locks.dia | 276 +++++++++++++++++++--
.../kernel-driver-development-concurrency.tex | 7 +-
3 files changed, 414 insertions(+), 44 deletions(-)
diff --git a/slides/kernel-driver-development-concurrency/deadlock-same-lock.dia b/slides/kernel-driver-development-concurrency/deadlock-same-lock.dia
index f351cfb..d6f2a46 100644
--- a/slides/kernel-driver-development-concurrency/deadlock-same-lock.dia
+++ b/slides/kernel-driver-development-concurrency/deadlock-same-lock.dia
@@ -97,7 +97,7 @@
<dia:point val="13,11"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="11.2925,10.6263;14.7075,11.3738"/>
+ <dia:rectangle val="11.515,10.53;14.485,11.47"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -111,7 +111,7 @@
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="13,11.2213"/>
+ <dia:point val="13,11.27"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -130,13 +130,13 @@
</dia:object>
<dia:object type="Standard - Line" version="0" id="O2">
<dia:attribute name="obj_pos">
- <dia:point val="13,7"/>
+ <dia:point val="13,8"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="12.6382,6.95;13.3618,10.1118"/>
+ <dia:rectangle val="12.6382,7.95;13.3618,10.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="13,7"/>
+ <dia:point val="13,8"/>
<dia:point val="13,10"/>
</dia:attribute>
<dia:attribute name="numcp">
@@ -189,7 +189,7 @@
<dia:point val="23,11"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="20.2138,10.6263;25.7863,11.3738"/>
+ <dia:rectangle val="20.5725,10.53;25.4275,11.47"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -203,7 +203,7 @@
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="23,11.2213"/>
+ <dia:point val="23,11.27"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -222,13 +222,13 @@
</dia:object>
<dia:object type="Standard - Box" version="0" id="O5">
<dia:attribute name="obj_pos">
- <dia:point val="20,15"/>
+ <dia:point val="20,14"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="19.95,14.95;26.05,17.05"/>
+ <dia:rectangle val="19.95,13.95;26.05,16.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="20,15"/>
+ <dia:point val="20,14"/>
</dia:attribute>
<dia:attribute name="elem_width">
<dia:real val="6"/>
@@ -251,10 +251,10 @@
</dia:object>
<dia:object type="Standard - Text" version="1" id="O6">
<dia:attribute name="obj_pos">
- <dia:point val="23,16"/>
+ <dia:point val="23,15"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="20.615,15.6263;25.385,16.3738"/>
+ <dia:rectangle val="20.8825,14.53;25.1175,15.47"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -268,7 +268,7 @@
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="23,16.2213"/>
+ <dia:point val="23,15.27"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -318,11 +318,11 @@
<dia:point val="23,12"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="22.6382,11.95;23.3618,15.1118"/>
+ <dia:rectangle val="22.6382,11.95;23.3618,14.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
<dia:point val="23,12"/>
- <dia:point val="23,15"/>
+ <dia:point val="23,14"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -341,5 +341,150 @@
<dia:connection handle="1" to="O5" connection="1"/>
</dia:connections>
</dia:object>
+ <dia:object type="Standard - Text" version="1" id="O9">
+ <dia:attribute name="obj_pos">
+ <dia:point val="25.8,21"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="25.8,20.405;25.8,21.15"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>##</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="25.8,21"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O10">
+ <dia:attribute name="obj_pos">
+ <dia:point val="26,15"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="25.95,14.6382;30.1118,15.3618"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="26,15"/>
+ <dia:point val="30,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="O5" connection="4"/>
+ <dia:connection handle="1" to="O11" connection="14"/>
+ </dia:connections>
+ </dia:object>
+ <dia:group>
+ <dia:object type="Geometric - Octogon" version="1" id="O11">
+ <dia:attribute name="obj_pos">
+ <dia:point val="30,13"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="29.9,12.9;34.1,17.1"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="30,13"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.20000000298023224"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#cc1f1a"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ff0000"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="flip_horizontal">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="flip_vertical">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="subscale">
+ <dia:real val="1"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O12">
+ <dia:attribute name="obj_pos">
+ <dia:point val="32.0952,15.0952"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="31.204,14.5002;32.9865,16.0452"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#dead
+lock#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="32.0952,15.0952"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O11" connection="15"/>
+ </dia:connections>
+ </dia:object>
+ </dia:group>
</dia:layer>
</dia:diagram>
diff --git a/slides/kernel-driver-development-concurrency/deadlock-two-locks.dia b/slides/kernel-driver-development-concurrency/deadlock-two-locks.dia
index afca8ff..212aea5 100644
--- a/slides/kernel-driver-development-concurrency/deadlock-two-locks.dia
+++ b/slides/kernel-driver-development-concurrency/deadlock-two-locks.dia
@@ -97,7 +97,7 @@
<dia:point val="11,7"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="9.2925,6.62625;12.7075,7.37375"/>
+ <dia:rectangle val="9.515,6.53;12.485,7.47"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -111,7 +111,7 @@
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="11,7.22125"/>
+ <dia:point val="11,7.27"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -130,13 +130,13 @@
</dia:object>
<dia:object type="Standard - Box" version="0" id="O2">
<dia:attribute name="obj_pos">
- <dia:point val="8,11"/>
+ <dia:point val="8,10"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="7.95,10.95;14.05,13.05"/>
+ <dia:rectangle val="7.95,9.95;14.05,12.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="8,11"/>
+ <dia:point val="8,10"/>
</dia:attribute>
<dia:attribute name="elem_width">
<dia:real val="6"/>
@@ -159,10 +159,10 @@
</dia:object>
<dia:object type="Standard - Text" version="1" id="O3">
<dia:attribute name="obj_pos">
- <dia:point val="11,12"/>
+ <dia:point val="11,11"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="9.2925,11.6263;12.7075,12.3738"/>
+ <dia:rectangle val="9.515,10.53;12.485,11.47"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -176,7 +176,7 @@
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="11,12.2213"/>
+ <dia:point val="11,11.27"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -227,7 +227,7 @@
<dia:point val="23,7"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="21.2925,6.62625;24.7075,7.37375"/>
+ <dia:rectangle val="21.515,6.53;24.485,7.47"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -241,7 +241,7 @@
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="23,7.22125"/>
+ <dia:point val="23,7.27"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -260,13 +260,13 @@
</dia:object>
<dia:object type="Standard - Box" version="0" id="O6">
<dia:attribute name="obj_pos">
- <dia:point val="20,11"/>
+ <dia:point val="20,10"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="19.95,10.95;26.05,13.05"/>
+ <dia:rectangle val="19.95,9.95;26.05,12.05"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="20,11"/>
+ <dia:point val="20,10"/>
</dia:attribute>
<dia:attribute name="elem_width">
<dia:real val="6"/>
@@ -289,10 +289,10 @@
</dia:object>
<dia:object type="Standard - Text" version="1" id="O7">
<dia:attribute name="obj_pos">
- <dia:point val="23,12"/>
+ <dia:point val="23,11"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="21.2925,11.6263;24.7075,12.3738"/>
+ <dia:rectangle val="21.515,10.53;24.485,11.47"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -306,7 +306,7 @@
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="23,12.2213"/>
+ <dia:point val="23,11.27"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
@@ -325,13 +325,13 @@
</dia:object>
<dia:object type="Standard - Line" version="0" id="O8">
<dia:attribute name="obj_pos">
- <dia:point val="23,3"/>
+ <dia:point val="23,4"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="22.6382,2.95;23.3618,6.1118"/>
+ <dia:rectangle val="22.6382,3.95;23.3618,6.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="23,3"/>
+ <dia:point val="23,4"/>
<dia:point val="23,6"/>
</dia:attribute>
<dia:attribute name="numcp">
@@ -355,11 +355,11 @@
<dia:point val="23,8"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="22.6382,7.95;23.3618,11.1118"/>
+ <dia:rectangle val="22.6382,7.95;23.3618,10.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
<dia:point val="23,8"/>
- <dia:point val="23,11"/>
+ <dia:point val="23,10"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -383,11 +383,11 @@
<dia:point val="11,8"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="10.6382,7.95;11.3618,11.1118"/>
+ <dia:rectangle val="10.6382,7.95;11.3618,10.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
<dia:point val="11,8"/>
- <dia:point val="11,11"/>
+ <dia:point val="11,10"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -408,13 +408,13 @@
</dia:object>
<dia:object type="Standard - Line" version="0" id="O11">
<dia:attribute name="obj_pos">
- <dia:point val="11,3"/>
+ <dia:point val="11,4"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="10.6382,2.95;11.3618,6.1118"/>
+ <dia:rectangle val="10.6382,3.95;11.3618,6.1118"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="11,3"/>
+ <dia:point val="11,4"/>
<dia:point val="11,6"/>
</dia:attribute>
<dia:attribute name="numcp">
@@ -433,5 +433,229 @@
<dia:connection handle="1" to="O0" connection="1"/>
</dia:connections>
</dia:object>
+ <dia:group>
+ <dia:object type="Geometric - Octogon" version="1" id="O12">
+ <dia:attribute name="obj_pos">
+ <dia:point val="9,14"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="8.9,13.9;13.1,18.1"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="9,14"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.20000000298023224"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#cc1f1a"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ff0000"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="flip_horizontal">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="flip_vertical">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="subscale">
+ <dia:real val="1"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O13">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11.0952,16.0952"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.204,15.5002;11.9865,17.0452"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#dead
+lock#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.0952,16.0952"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O12" connection="15"/>
+ </dia:connections>
+ </dia:object>
+ </dia:group>
+ <dia:group>
+ <dia:object type="Geometric - Octogon" version="1" id="O14">
+ <dia:attribute name="obj_pos">
+ <dia:point val="21,14"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="20.9,13.9;25.1,18.1"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="21,14"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.20000000298023224"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#cc1f1a"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ff0000"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="flip_horizontal">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="flip_vertical">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="subscale">
+ <dia:real val="1"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O15">
+ <dia:attribute name="obj_pos">
+ <dia:point val="23.0952,16.0952"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="22.204,15.5002;23.9865,17.0452"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#dead
+lock#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="23.0952,16.0952"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O14" connection="15"/>
+ </dia:connections>
+ </dia:object>
+ </dia:group>
+ <dia:object type="Standard - Line" version="0" id="O16">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11,12"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.6382,11.95;11.3618,14.1118"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="11,12"/>
+ <dia:point val="11,14"/>
+ </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="6"/>
+ <dia:connection handle="1" to="O12" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O17">
+ <dia:attribute name="obj_pos">
+ <dia:point val="23,12"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="22.6382,11.95;23.3618,14.1118"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="23,12"/>
+ <dia:point val="23,14"/>
+ </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="O6" connection="6"/>
+ <dia:connection handle="1" to="O14" connection="8"/>
+ </dia:connections>
+ </dia:object>
</dia:layer>
</dia:diagram>
diff --git a/slides/kernel-driver-development-concurrency/kernel-driver-development-concurrency.tex b/slides/kernel-driver-development-concurrency/kernel-driver-development-concurrency.tex
index 15276e2..2b25d4c 100644
--- a/slides/kernel-driver-development-concurrency/kernel-driver-development-concurrency.tex
+++ b/slides/kernel-driver-development-concurrency/kernel-driver-development-concurrency.tex
@@ -217,14 +217,15 @@ static unsigned int ulite_tx_empty
\begin{frame}
\frametitle{Deadlock Situations}
+ They can lock up your system. Make sure they never happen!
\begin{itemize}
- \item They can lock up your system. Make sure they never happen!
- \item Don't call a function that can try to get access to the same
+ \item Rule: never call a function that can try to get access to the same
lock
\begin{center}
\includegraphics[height=0.3\textheight]{slides/kernel-driver-development-concurrency/deadlock-same-lock.pdf}
\end{center}
- \item Holding multiple locks is risky!
+ \item Rule: when you use multiple locks, always acquire them in the
+ same order
\begin{center}
\includegraphics[height=0.3\textheight]{slides/kernel-driver-development-concurrency/deadlock-two-locks.pdf}
\end{center}
More information about the training-materials-updates
mailing list