[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