[bootlin/training-materials updates] master: Kernel device model: add disconnect() example (13734120)

Michael Opdenacker michael.opdenacker at bootlin.com
Wed Sep 4 10:14:04 CEST 2019


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/13734120fb0c95f64929a7295cc04fa470d48776

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

commit 13734120fb0c95f64929a7295cc04fa470d48776
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date:   Wed Sep 4 10:14:04 2019 +0200

    Kernel device model: add disconnect() example
    
    - Side by side with the probe() one
    
    Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>


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

13734120fb0c95f64929a7295cc04fa470d48776
 slides/kernel-device-model/kernel-device-model.tex | 38 +++++++++++++++++++---
 1 file changed, 33 insertions(+), 5 deletions(-)

diff --git a/slides/kernel-device-model/kernel-device-model.tex b/slides/kernel-device-model/kernel-device-model.tex
index 80fa468a..14718ec7 100644
--- a/slides/kernel-device-model/kernel-device-model.tex
+++ b/slides/kernel-device-model/kernel-device-model.tex
@@ -258,9 +258,11 @@ module_exit(usb_rtl8150_exit);
 \end{frame}
 
 \begin{frame}[fragile]
-\frametitle{Probe Method Example}
-\begin{block}{}
-\begin{minted}[fontsize=\scriptsize]{c}
+\frametitle{Example: probe() and disconnect() methods}
+\begin{columns}
+  \column{0.5\textwidth}
+    \begin{block}{}
+    \begin{minted}[fontsize=\tiny]{c}
 static int rtl8150_probe(struct usb_interface *intf,
     const struct usb_device_id *id)
 {
@@ -282,8 +284,34 @@ static int rtl8150_probe(struct usb_interface *intf,
 
     return 0;
 }
-\end{minted}
-\end{block}
+    \end{minted}
+    \end{block}
+  \column{0.5\textwidth}
+    \begin{block}{}
+    \begin{minted}[fontsize=\tiny]{c}
+static void rtl8150_disconnect(struct usb_interface *intf)
+{
+        rtl8150_t *dev = usb_get_intfdata(intf);
+
+        usb_set_intfdata(intf, NULL);
+        if (dev) {
+                set_bit(RTL8150_UNPLUG, &dev->flags);
+                tasklet_kill(&dev->tl);
+                unregister_netdev(dev->netdev);
+                unlink_all_urbs(dev);
+                free_all_urbs(dev);
+                free_skb_pool(dev);
+                if (dev->rx_skb)
+                        dev_kfree_skb(dev->rx_skb);
+                kfree(dev->intr_buff);
+                free_netdev(dev->netdev);
+        }
+}
+    \end{minted}
+    \end{block}
+\end{columns}
+\vfill
+Source: \kfile{drivers/net/usb/rtl8150.c}
 \end{frame}
 
 \begin{frame}




More information about the training-materials-updates mailing list