[FE training-materials-updates] Minor updates and improvements

Michael Opdenacker michael.opdenacker at free-electrons.com
Wed Dec 7 16:49:03 CET 2016


Repository : git://git.free-electrons.com/training-materials.git
On branch  : master
Link       : http://git.free-electrons.com/training-materials/commit/?id=e0a92dc9c9dbd71a0954e8cd77811b87a56614b7

>---------------------------------------------------------------

commit e0a92dc9c9dbd71a0954e8cd77811b87a56614b7
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Dec 7 16:44:48 2016 +0100

    Minor updates and improvements
    
    Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>


>---------------------------------------------------------------

e0a92dc9c9dbd71a0954e8cd77811b87a56614b7
 .../kernel-driver-development-memory.tex           |  2 +-
 .../kernel-driver-development-sleeping.tex         | 35 ++++++++++++----------
 slides/kernel-frameworks2/kernel-frameworks2.tex   |  2 +-
 3 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex b/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex
index c5e431c..916b2e5 100644
--- a/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex
+++ b/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex
@@ -370,7 +370,7 @@ kfree(work);
   \item \code{Kmemcheck}
     \begin{itemize}
     \item Dynamic checker for access to uninitialized memory.
-    \item Only available on \code{x86} so far (Linux 3.17 status), but will
+    \item Only available on \code{x86} so far (Linux 4.9 status), but will
       help to improve architecture independent code anyway.
     \item See \kerneldoc{kmemcheck.txt} for details.
     \end{itemize}
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 2ec20d7..e2decd9 100644
--- a/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
+++ b/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
@@ -12,24 +12,29 @@
 \begin{frame}[fragile]
   \frametitle{How to sleep 1/3}
   \begin{itemize}
-  \item Must declare a wait queue
-  \item A wait queue will be used to store the list of threads waiting for an event
-    \begin{itemize}
-    \item Static queue declaration
-      \begin{itemize}
-      \item useful to declare as a global variable
-      \item \mint{c}+DECLARE_WAIT_QUEUE_HEAD(module_queue);+
-      \end{itemize}
-    \item Or dynamic queue declaration
+  \item Must declare a wait queue, which will be used to store the list of threads
+        waiting for an event
+  \item Dynamic queue declaration:
       \begin{itemize}
-      \item Useful to embed the wait queue inside another data
-        structure
+      \item Typically one queue per device managed by the driver
+      \item It's convenient to embed the wait queue inside a per-device data
+        structure.
+      \item Example from \kpath{drivers/net/ethernet/marvell/mvmdio.c}:
 \begin{minted}{c}
-wait_queue_head_t queue;
-init_waitqueue_head(&queue);
+struct orion_mdio_dev {
+        ...
+        wait_queue_head_t smi_busy_wait;
+};
+struct orion_mdio_dev *dev;
+...
+init_waitqueue_head(&dev->smi_busy_wait);
 \end{minted}
-      \end{itemize}
     \end{itemize}
+    \item Static queue declaration:
+      \begin{itemize}
+      \item Using a global variable when a global resource is sufficient
+      \item \mint{c}+DECLARE_WAIT_QUEUE_HEAD(module_queue);+
+      \end{itemize}
   \end{itemize}
 \end{frame}
 
@@ -46,7 +51,7 @@ init_waitqueue_head(&queue);
   \item \mint{c}+int wait_event_killable(queue, condition);+
     \begin{itemize}
     \item Can be interrupted, but only by a \emph{fatal} signal
-      (\ksym{SIGKILL}). Returns \code{-}\ksym{ERESTARSYS} if interrupted.
+      (\ksym{SIGKILL}). Returns \code{-}\ksym{ERESTARTSYS} if interrupted.
     \end{itemize}
   \item \mint{c}+int wait_event_interruptible(queue, condition);+
     \begin{itemize}
diff --git a/slides/kernel-frameworks2/kernel-frameworks2.tex b/slides/kernel-frameworks2/kernel-frameworks2.tex
index a393964..758271e 100644
--- a/slides/kernel-frameworks2/kernel-frameworks2.tex
+++ b/slides/kernel-frameworks2/kernel-frameworks2.tex
@@ -84,7 +84,7 @@ struct file_operations {
     \item Called when user space uses the \code{read()} system call on
       the device.
     \item Must read data from the device, write at most \code{sz}
-      bytes in the user space buffer \code{buf}, and update the
+      bytes to the user space buffer \code{buf}, and update the
       current position in the file \code{off}. \code{f} is a pointer
       to the same file structure that was passed in the \code{open()}
       operation




More information about the training-materials-updates mailing list