summaryrefslogtreecommitdiff
path: root/kernel-devel/module-basics
diff options
context:
space:
mode:
authorJohn Ogness <john.ogness@linutronix.de>2018-02-20 15:33:14 +0100
committerJohn Ogness <john.ogness@linutronix.de>2018-02-20 15:33:14 +0100
commit0351969fdffa9959921d8ec38b7d0d7cf095fcd0 (patch)
tree168fe35c8d3324b11181098dd7c09d0fa409f88d /kernel-devel/module-basics
parentffce744d7d8a0f7a6846164bfc16fc0753683127 (diff)
remove german slides when english are available
Remove german slides if a completely translated english version is available. For slides that have been translated to english, but do not contain all the information of the german slides, the german slides are still available. But they are only available for reference. That will not be built. Signed-off-by: John Ogness <john.ogness@linutronix.de>
Diffstat (limited to 'kernel-devel/module-basics')
-rw-r--r--kernel-devel/module-basics/Makefile1
-rw-r--r--kernel-devel/module-basics/pres_module-basics_de.tex523
2 files changed, 0 insertions, 524 deletions
diff --git a/kernel-devel/module-basics/Makefile b/kernel-devel/module-basics/Makefile
index 82017d4..952b311 100644
--- a/kernel-devel/module-basics/Makefile
+++ b/kernel-devel/module-basics/Makefile
@@ -1,2 +1 @@
-obj-$(CONFIG_KERNEL_MODULES_BASIC) += pres_module-basics_de.pdf
obj-$(CONFIG_KERNEL_MODULES_BASIC) += pres_module-basics_en.pdf
diff --git a/kernel-devel/module-basics/pres_module-basics_de.tex b/kernel-devel/module-basics/pres_module-basics_de.tex
deleted file mode 100644
index e303cca..0000000
--- a/kernel-devel/module-basics/pres_module-basics_de.tex
+++ /dev/null
@@ -1,523 +0,0 @@
-\input{configpres}
-
-\title{Treiber Modul Grundlagen}
-\maketitle
-
-\subsection{Kernel Module}
-
-\subsubsection{Aufbau}
-\begin{frame}[fragile]
-\frametitle{Aufbau eines Treiber Moduls}
-\pause
-\begin{itemize}
-\item Header
-\pause
-\begin{scriptsize}
-\begin{lstlisting}[frame=trBL]
-#include <linux/init.h>
-#include <linux/module.h>
-\end{lstlisting}
-\end{scriptsize}
-\pause
-\item Init
-\pause
-\begin{scriptsize}
-\begin{lstlisting}[frame=trBL]
-static int __init vain_init(void)
-{
- printk(KERN_INFO "vain_init: done\n");
- return 0;
-}
-
-module_init(vain_init);
-\end{lstlisting}
-\end{scriptsize}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau (fort.)}
-\begin{itemize}
-\item Exit
-\pause
-\begin{scriptsize}
-\begin{lstlisting}[frame=trBL]
-static void __exit vain_exit(void)
-{
- printk(KERN_INFO "vain_exit: done\n");
-}
-
-module_exit(vain_exit);
-\end{lstlisting}
-\end{scriptsize}
-\pause
-\item Beschreibung
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-MODULE_AUTHOR("Benedikt Spranger <b.spranger@linutronix.de>");
-MODULE_DESCRIPTION("a more or less useless module");
-MODULE_LICENSE("GPL v2");
-MODULE_VERSION("0815");
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\subsubsection{Rumpf Treiber}
-\begin{frame}[fragile]
-\frametitle{Rumpf Treiber}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain/vain.c}
-\end{tiny}
-\end{frame}
-
-\subsubsection{Makefile}
-\begin{frame}[fragile]
-\frametitle{Makefile}
-\begin{scriptsize}
-\lstinputlisting[language=make]{kernel-devel/module-basics/vain/Makefile}
-\end{scriptsize}
-\end{frame}
-
-\subsubsection{Bauen und Laden}
-\begin{frame}[fragile]
-\frametitle{Bauen, laden und entladen des Moduls}
-\begin{itemize}
-\item Bauen
-\pause
-\begin{tiny}
-\begin{verbatim}
-$ make
-make -C /lib/modules/2.6.30/build M=/path/to/vain modules
-make[1]: Entering directory `/usr/src/linux-2.6.30'
- CC [M] /path/to/vain/vain.o
- Building modules, stage 2.
- MODPOST 1 modules
- CC /path/to/vain/vain.mod.o
- LD [M] /path/to/vain/vain.ko
-make[1]: Leaving directory `/usr/src/linux-2.6.30'
-$
-\end{verbatim}
-\end{tiny}
-\pause
-\item Laden
-\pause
-\begin{tiny}
-\begin{verbatim}
-# insmod ./vain.ko
-vain_init: done
-#
-\end{verbatim}
-\end{tiny}
-\item Entladen
-\pause
-\begin{tiny}
-\begin{verbatim}
-# rmmod vain
-vain_exit: done
-#
-\end{verbatim}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}
-\frametitle{Komplexere Module}
-\pause
-\begin{itemize}
-\item Teil eines Bussystems
-\pause
-\begin{itemize}
-\item PCI
-\pause
-\item Platform
-\pause
-\item USB
-\pause
-\item \dots
-\pause
-\end{itemize}
-\item Teil eines Subsystems\footnote{nicht Teil des Vortrages}
-\pause
-\begin{itemize}
-\item Character-Devices
-\pause
-\item Block-Devices
-\pause
-\item Network-Devices
-\pause
-\item \dots
-\end{itemize}
-\end{itemize}
-\end{frame}
-
-\subsubsection{PCI Treiber Modul}
-\begin{frame}[fragile]
-\frametitle{Aufbau eines PCI Treiber Moduls}
-\pause
-\begin{itemize}
-\item Header
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-#include <linux/init.h>
-#include <linux/module.h>
-|#include <linux/pci.h>|
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Init
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-static int __init vain_pci_init(void)
-{
- int err;
-
- |err = pci_register_driver(&vain_pci_driver);|
-
- if (!err)
- printk(KERN_INFO "vain_pci_init: done\n");
- return err;
-}
-
-module_init(vain_pci_init);
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines PCI Treiber Moduls (fort.)}
-\begin{itemize}
-\item Exit
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-static void __exit vain_pci_exit(void)
-{
- |pci_unregister_driver(&vain_pci_driver);|
- printk(KERN_INFO ``vain_pci_exit: done\n'');
-}
-
-module_exit(vain_pci_exit);
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines PCI Treiber Moduls (fort.)}
-\begin{itemize}
-\item struct pci\_driver
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-|static struct pci_driver vain_pci_driver = {
- .name = "vain_pci",
- .id_table = vain_pci_ids,
- .probe = vain_pci_probe,
- .remove = __devexit_p(vain_pci_remove),
-};|
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines PCI Treiber Moduls (fort.)}
-\begin{itemize}
-\item struct struct pci\_device\_id
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-|static struct pci_device_id vain_pci_ids[] __devinitdata = {
- {PCI_VENDOR_ID_ILLEGAL_VENDOR, PCI_DEVICE_ID_ILLEGAL_VENDOR_DEVICE,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
- {0, }
-};|
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines PCI Treiber Moduls (fort.)}
-\begin{itemize}
-\item probe
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-|static int __devinit vain_pci_probe(struct pci_dev *pdev,
- const struct pci_device_id *ent)
-{
- int ret;
-
- ret = pci_enable_device(pdev);
- if (ret)
- goto err_free;
-
- ret = pci_request_regions(pdev, "vain_pci");
- if (ret)
- goto err_disable_device;
-
- info->base = pci_ioremap_bar(pdev, 0);
- if (!info->base) {
- ret = -ENODEV;
- goto err_rel_regs;
- }
-
- return 0;|
-\end{lstlisting}
-\dots
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines PCI Treiber Moduls (fort.)}
-\begin{itemize}
-\item remove
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-|static void __devexit vain_pci_remove(struct pci_dev *pdev)
-{
- struct vain_pci_info *info = pci_get_drvdata(pdev);
-
- iounmap(info->base);
- pci_release_regions(pdev);
- pci_disable_device(pdev);
- pci_set_drvdata(pdev, NULL);
-
- kfree (info);
-}|
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}
-\frametitle{PCI Treiber Hintergrund}
-\includegraphics[width=7cm]{images/PCI_driver.png}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{PCI Rumpf Treiber}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_pci/vain_pci_1.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{PCI Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_pci/vain_pci_2.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{PCI Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_pci/vain_pci_3.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{PCI Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_pci/vain_pci_4.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{PCI Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_pci/vain_pci_5.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{PCI Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_pci/vain_pci_6.c}
-\end{tiny}
-\end{frame}
-
-\subsubsection{Platform Treiber Modul}
-\begin{frame}[fragile]
-\frametitle{Aufbau eines Platform Treiber Moduls}
-\pause
-\begin{itemize}
-\item Header
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-#include <linux/init.h>
-#include <linux/module.h>
-|#include <linux/platform_device.h>
-
-#include <asm/io.h>|
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Init
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-static int __init vain_plat_init(void)
-{
- int err;
-
- |err = platform_driver_register(&vain_plat_driver);|
-
- if (!err)
- printk(KERN_INFO ``vain_plat_init: done\n'');
- return err;
-}
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines Platform Treiber Moduls (fort.)}
-\pause
-\begin{itemize}
-\item Exit
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-static void __exit vain_plat_exit(void)
-{
- |platform_driver_unregister(&vain_plat_driver);|
- printk(KERN_INFO ``vain_plat_exit: done\n'');
-}
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines Platform Treiber Moduls (fort.)}
-\pause
-\begin{itemize}
-\item struct platform\_driver
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-|static struct platform_driver vain_plat_driver = {
- .driver = {
- .name = "vain_plat",
- .owner = THIS_MODULE,
- },
- .probe = vain_plat_probe,
- .remove = __devexit_p(vain_plat_remove),
-};|
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines Platform Treiber Moduls (fort.)}
-\pause
-\begin{itemize}
-\item probe
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-|static int __devinit vain_plat_probe(struct platform_device *pdev)
-{
- struct resource *res;
- int err;
-
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (unlikely(!res))
- goto err_free;
-
- mem = request_mem_region(res->start, resource_size(res), pdev->name);
- if (!mem)
- goto err_free;
-
- info->base = ioremap(res->start, resource_size(res));
- if (!info->base)
- goto err_ioremap;
-
- platform_set_drvdata(pdev, info);
-
- return 0;|
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Aufbau eines Platform Treiber Moduls (fort.)}
-\pause
-\begin{itemize}
-\item remove
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-|static int __devexit vain_plat_remove(struct platform_device *pdev)
-{
- struct vain_plat_info *info = platform_get_drvdata(pdev);
- struct resource *res;
-
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- iounmap(info->base);
- release_mem_region(res->start, resource_size(res));
- platform_set_drvdata(pdev, NULL);
-
- kfree (info);
-
- return 0;
-}|
-\end{lstlisting}
-\end{tiny}
-\end{itemize}
-\end{frame}
-
-\begin{frame}
-\frametitle{Platform Treiber Hintergrund}
-\includegraphics[width=7cm]{images/plat_driver.png}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Platform Rumpf Treiber}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_plat/vain_plat_1.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Platform Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_plat/vain_plat_2.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Platform Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_plat/vain_plat_3.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Platform Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_plat/vain_plat_4.c}
-\end{tiny}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Platform Rumpf Treiber (fort.)}
-\begin{tiny}
-\lstinputlisting{kernel-devel/module-basics/vain_plat/vain_plat_5.c}
-\end{tiny}
-\end{frame}
-
-\input{tailpres}