[FE training-materials-updates] Improve the explanations about exchanging data between user space and kernel space
Michael Opdenacker
michael.opdenacker at free-electrons.com
Wed May 17 15:39:33 CEST 2017
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=8605b32439f1bf9743fc9bf81bcbd3c949a0ee7b
>---------------------------------------------------------------
commit 8605b32439f1bf9743fc9bf81bcbd3c949a0ee7b
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date: Wed May 17 15:39:33 2017 +0200
Improve the explanations about exchanging data between user space and kernel space
Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>
>---------------------------------------------------------------
8605b32439f1bf9743fc9bf81bcbd3c949a0ee7b
slides/kernel-frameworks2/copy-to-from-user.dia | 277 +++++++++++++++++-------
1 file changed, 196 insertions(+), 81 deletions(-)
diff --git a/slides/kernel-frameworks2/copy-to-from-user.dia b/slides/kernel-frameworks2/copy-to-from-user.dia
index 7eab271..5389401 100644
--- a/slides/kernel-frameworks2/copy-to-from-user.dia
+++ b/slides/kernel-frameworks2/copy-to-from-user.dia
@@ -2,10 +2,10 @@
<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
<dia:diagramdata>
<dia:attribute name="background">
- <dia:color val="#ffffff"/>
+ <dia:color val="#ffffffff"/>
</dia:attribute>
<dia:attribute name="pagebreak">
- <dia:color val="#000099"/>
+ <dia:color val="#000099ff"/>
</dia:attribute>
<dia:attribute name="paper">
<dia:composite type="paper">
@@ -37,6 +37,9 @@
</dia:attribute>
<dia:attribute name="grid">
<dia:composite type="grid">
+ <dia:attribute name="dynamic">
+ <dia:boolean val="true"/>
+ </dia:attribute>
<dia:attribute name="width_x">
<dia:real val="1"/>
</dia:attribute>
@@ -53,7 +56,7 @@
</dia:composite>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#d8e5e5"/>
+ <dia:color val="#d8e5e5ff"/>
</dia:attribute>
<dia:attribute name="guides">
<dia:composite type="guides">
@@ -61,9 +64,34 @@
<dia:attribute name="vguides"/>
</dia:composite>
</dia:attribute>
+ <dia:attribute name="display">
+ <dia:composite type="display">
+ <dia:attribute name="antialiased">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="snap-to-grid">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="snap-to-object">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="show-grid">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="show-connection-points">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
</dia:diagramdata>
- <dia:layer name="Arrière-plan" visible="true" active="true">
+ <dia:layer name="Arrière-plan" visible="true" connectable="true" active="true">
<dia:group>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="matrix">
+ <dia:matrix xx="1" xy="0" yx="0" yy="0.873444" x0="0" y0="0.246784"/>
+ </dia:attribute>
<dia:object type="Standard - Box" version="0" id="O0">
<dia:attribute name="obj_pos">
<dia:point val="12,8"/>
@@ -84,10 +112,10 @@
<dia:real val="0.10000000149011612"/>
</dia:attribute>
<dia:attribute name="border_color">
- <dia:color val="#5cacff"/>
+ <dia:color val="#5cacffff"/>
</dia:attribute>
<dia:attribute name="inner_color">
- <dia:color val="#add8e6"/>
+ <dia:color val="#add8e6ff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
@@ -113,10 +141,10 @@
<dia:real val="0.10000000149011612"/>
</dia:attribute>
<dia:attribute name="border_color">
- <dia:color val="#a34804"/>
+ <dia:color val="#a34804ff"/>
</dia:attribute>
<dia:attribute name="inner_color">
- <dia:color val="#ffd192"/>
+ <dia:color val="#ffd192ff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
@@ -137,7 +165,7 @@
<dia:int val="1"/>
</dia:attribute>
<dia:attribute name="line_color">
- <dia:color val="#cc1f1a"/>
+ <dia:color val="#cc1f1aff"/>
</dia:attribute>
</dia:object>
</dia:group>
@@ -161,10 +189,10 @@
<dia:real val="0.10000000149011612"/>
</dia:attribute>
<dia:attribute name="border_color">
- <dia:color val="#6a8954"/>
+ <dia:color val="#6a8954ff"/>
</dia:attribute>
<dia:attribute name="inner_color">
- <dia:color val="#c5e387"/>
+ <dia:color val="#c5e387ff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
@@ -190,10 +218,10 @@
<dia:real val="0.10000000149011612"/>
</dia:attribute>
<dia:attribute name="border_color">
- <dia:color val="#2f004a"/>
+ <dia:color val="#2f004aff"/>
</dia:attribute>
<dia:attribute name="inner_color">
- <dia:color val="#efb9ff"/>
+ <dia:color val="#efb9ffff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
@@ -204,7 +232,7 @@
<dia:point val="12,14.5"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="8.95,4.1382;12.1118,14.55"/>
+ <dia:rectangle val="8.95,4.1382;12.05,14.55"/>
</dia:attribute>
<dia:attribute name="orth_points">
<dia:point val="12,14.5"/>
@@ -239,12 +267,12 @@
<dia:point val="20,4.5"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="19.8882,4.45;23.05,14.8618"/>
+ <dia:rectangle val="19.95,4.45;25.15,14.8618"/>
</dia:attribute>
<dia:attribute name="orth_points">
<dia:point val="20,4.5"/>
- <dia:point val="23,4.5"/>
- <dia:point val="23,14.5"/>
+ <dia:point val="25.1,4.5"/>
+ <dia:point val="25.1,14.5"/>
<dia:point val="20,14.5"/>
</dia:attribute>
<dia:attribute name="orth_orient">
@@ -271,14 +299,14 @@
</dia:object>
<dia:object type="Standard - Line" version="0" id="O7">
<dia:attribute name="obj_pos">
- <dia:point val="25,2"/>
+ <dia:point val="23.8,2.05"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="19.9,1.93292;25.0671,4.57"/>
+ <dia:rectangle val="18.7329,1.98292;23.8671,4.61708"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="25,2"/>
- <dia:point val="20,4.5"/>
+ <dia:point val="23.8,2.05"/>
+ <dia:point val="18.8,4.55"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -292,16 +320,13 @@
<dia:attribute name="end_arrow_width">
<dia:real val="0.5"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="1" to="O4" connection="4"/>
- </dia:connections>
</dia:object>
<dia:object type="Standard - Text" version="1" id="O8">
<dia:attribute name="obj_pos">
- <dia:point val="26,2"/>
+ <dia:point val="24.9,2"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="26,1.50625;30.4525,2.49375"/>
+ <dia:rectangle val="24.9,1.38;28.7025,2.62"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -315,10 +340,10 @@
<dia:real val="1.0583332926034927"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="26,2.29375"/>
+ <dia:point val="24.9,2.3575"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="0"/>
@@ -331,10 +356,10 @@
</dia:object>
<dia:object type="Standard - Text" version="1" id="O9">
<dia:attribute name="obj_pos">
- <dia:point val="27,18"/>
+ <dia:point val="25.55,18"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="27,17.5063;33.2925,18.4938"/>
+ <dia:rectangle val="25.55,17.38;31.275,18.62"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -348,10 +373,10 @@
<dia:real val="1.0583332926034927"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="27,18.2938"/>
+ <dia:point val="25.55,18.3575"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="0"/>
@@ -364,14 +389,14 @@
</dia:object>
<dia:object type="Standard - Line" version="0" id="O10">
<dia:attribute name="obj_pos">
- <dia:point val="26,18"/>
+ <dia:point val="24.85,18"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="19.9034,14.4308;26.0684,18.0684"/>
+ <dia:rectangle val="18.7816,14.4316;24.9184,18.0684"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="26,18"/>
- <dia:point val="20,14.5"/>
+ <dia:point val="24.85,18"/>
+ <dia:point val="18.85,14.5"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -385,16 +410,13 @@
<dia:attribute name="end_arrow_width">
<dia:real val="0.5"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="1" to="O3" connection="4"/>
- </dia:connections>
</dia:object>
<dia:object type="Standard - Text" version="1" id="O11">
<dia:attribute name="obj_pos">
- <dia:point val="24,9"/>
+ <dia:point val="25.7,9"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="24,8.4075;30.68,9.5925"/>
+ <dia:rectangle val="25.7,8.25625;31.565,9.74375"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -408,10 +430,10 @@
<dia:real val="1.2699999511241913"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="24,9.3525"/>
+ <dia:point val="25.7,9.42875"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="0"/>
@@ -424,10 +446,10 @@
</dia:object>
<dia:object type="Standard - Text" version="1" id="O12">
<dia:attribute name="obj_pos">
- <dia:point val="6,2"/>
+ <dia:point val="7.35,2"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="2.6675,1.46922;6.02469,2.53078"/>
+ <dia:rectangle val="4.465,1.38;7.35,2.62"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -441,10 +463,10 @@
<dia:real val="1.0583332926034927"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="6,2.28141"/>
+ <dia:point val="7.35,2.3575"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="2"/>
@@ -457,14 +479,14 @@
</dia:object>
<dia:object type="Standard - Line" version="0" id="O13">
<dia:attribute name="obj_pos">
- <dia:point val="7,2"/>
+ <dia:point val="8,2"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="6.93292,1.93292;12.1,4.57"/>
+ <dia:rectangle val="7.93292,1.93292;13.0671,4.56708"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="7,2"/>
- <dia:point val="12,4.5"/>
+ <dia:point val="8,2"/>
+ <dia:point val="13,4.5"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -478,16 +500,13 @@
<dia:attribute name="end_arrow_width">
<dia:real val="0.5"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="1" to="O4" connection="3"/>
- </dia:connections>
</dia:object>
<dia:object type="Standard - Text" version="1" id="O14">
<dia:attribute name="obj_pos">
<dia:point val="8,9"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="-0.025,8.36306;8.02962,9.63694"/>
+ <dia:rectangle val="1.0375,8.25625;8,9.74375"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -501,10 +520,10 @@
<dia:real val="1.2699999511241913"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="8,9.33769"/>
+ <dia:point val="8,9.42875"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="2"/>
@@ -517,10 +536,10 @@
</dia:object>
<dia:object type="Standard - Text" version="1" id="O15">
<dia:attribute name="obj_pos">
- <dia:point val="5,18"/>
+ <dia:point val="6.25,18"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="-2.4125,17.4692;5.02469,18.5308"/>
+ <dia:rectangle val="-0.3925,17.38;6.25,18.62"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -534,10 +553,10 @@
<dia:real val="1.0583332926034927"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="5,18.2814"/>
+ <dia:point val="6.25,18.3575"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="2"/>
@@ -550,14 +569,14 @@
</dia:object>
<dia:object type="Standard - Line" version="0" id="O16">
<dia:attribute name="obj_pos">
- <dia:point val="6,18"/>
+ <dia:point val="6.9,18"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="5.93162,14.4308;12.0966,18.0684"/>
+ <dia:rectangle val="6.83162,14.4316;12.9684,18.0684"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
- <dia:point val="6,18"/>
- <dia:point val="12,14.5"/>
+ <dia:point val="6.9,18"/>
+ <dia:point val="12.9,14.5"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
@@ -571,16 +590,13 @@
<dia:attribute name="end_arrow_width">
<dia:real val="0.5"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="1" to="O3" connection="3"/>
- </dia:connections>
</dia:object>
<dia:object type="Standard - Text" version="1" id="O17">
<dia:attribute name="obj_pos">
<dia:point val="16,2"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="13.5312,1.0125;18.4688,2"/>
+ <dia:rectangle val="13.6638,0.76;18.3362,2"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -594,10 +610,10 @@
<dia:real val="1.0583332926034927"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="16,1.8"/>
+ <dia:point val="16,1.7375"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="1"/>
@@ -613,10 +629,10 @@
</dia:object>
<dia:object type="Standard - Text" version="1" id="O18">
<dia:attribute name="obj_pos">
- <dia:point val="16,26"/>
+ <dia:point val="16,22.85"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="13.3313,26;18.6688,26.9875"/>
+ <dia:rectangle val="13.9038,22.85;18.0963,24.09"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -630,10 +646,10 @@
<dia:real val="1.0583332926034927"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="16,26.7875"/>
+ <dia:point val="16,23.8275"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="1"/>
@@ -643,16 +659,13 @@
<dia:attribute name="valign">
<dia:enum val="0"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="0" to="O0" connection="6"/>
- </dia:connections>
</dia:object>
<dia:object type="Standard - Text" version="1" id="O19">
<dia:attribute name="obj_pos">
<dia:point val="16,8"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="13.305,8;18.695,8.9875"/>
+ <dia:rectangle val="13.845,8;18.155,9.24"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -666,10 +679,10 @@
<dia:real val="1.0583332926034927"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="16,8.7875"/>
+ <dia:point val="16,8.9775"/>
</dia:attribute>
<dia:attribute name="color">
- <dia:color val="#000000"/>
+ <dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="1"/>
@@ -683,5 +696,107 @@
<dia:connection handle="0" to="O0" connection="1"/>
</dia:connections>
</dia:object>
+ <dia:object type="Standard - Text" version="1" id="O20">
+ <dia:attribute name="obj_pos">
+ <dia:point val="20.295,7.02"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="20.295,6.4;24.57,7.64"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#kernel space#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.0583332926034927"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="20.295,7.3775"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#cc1f1aff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O21">
+ <dia:attribute name="obj_pos">
+ <dia:point val="20.395,8.62"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="20.395,8;24.025,9.24"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#user space#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.0583332926034927"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="20.395,8.9775"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#cc1f1aff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O22">
+ <dia:attribute name="obj_pos">
+ <dia:point val="0.9,21.2"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="0.9,18.9925;10.79,23.4075"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#User and kernel addresses
+don't overlap, to avoid
+switching MMU page tables
+every time we make a copy#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.0583332926034927"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="0.9,19.97"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#cc1f1aff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
</dia:layer>
</dia:diagram>
More information about the training-materials-updates
mailing list