[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