diff options
Diffstat (limited to 'kernel-devel/module-basics')
| -rw-r--r-- | kernel-devel/module-basics/Makefile | 9 | ||||
| -rw-r--r-- | kernel-devel/module-basics/linutronix-left.png | bin | 0 -> 17432 bytes | |||
| -rw-r--r-- | kernel-devel/module-basics/linutronix-right.png | bin | 0 -> 5559 bytes | |||
| -rw-r--r-- | kernel-devel/module-basics/linutronix.png | bin | 0 -> 24712 bytes | |||
| -rw-r--r-- | kernel-devel/module-basics/pres_module-basics_de.tex | 135 | ||||
| -rw-r--r-- | kernel-devel/module-basics/vain/Makefile | 13 | ||||
| -rw-r--r-- | kernel-devel/module-basics/vain/vain.c | 20 |
7 files changed, 177 insertions, 0 deletions
diff --git a/kernel-devel/module-basics/Makefile b/kernel-devel/module-basics/Makefile new file mode 100644 index 0000000..89dcfb4 --- /dev/null +++ b/kernel-devel/module-basics/Makefile @@ -0,0 +1,9 @@ +PART=module-basics + +all: + pdflatex pres_$(PART)_de.tex +# pdflatex hints_$(PART)_de.tex +# pdflatex handout_$(PART)_de.tex + +clean: + rm -f *.aux *.log *.pdf *.log *.snm *.toc *.vrb *.nav *.out diff --git a/kernel-devel/module-basics/linutronix-left.png b/kernel-devel/module-basics/linutronix-left.png Binary files differnew file mode 100644 index 0000000..c9864c8 --- /dev/null +++ b/kernel-devel/module-basics/linutronix-left.png diff --git a/kernel-devel/module-basics/linutronix-right.png b/kernel-devel/module-basics/linutronix-right.png Binary files differnew file mode 100644 index 0000000..136f35d --- /dev/null +++ b/kernel-devel/module-basics/linutronix-right.png diff --git a/kernel-devel/module-basics/linutronix.png b/kernel-devel/module-basics/linutronix.png Binary files differnew file mode 100644 index 0000000..0c0e706 --- /dev/null +++ b/kernel-devel/module-basics/linutronix.png diff --git a/kernel-devel/module-basics/pres_module-basics_de.tex b/kernel-devel/module-basics/pres_module-basics_de.tex new file mode 100644 index 0000000..3e62220 --- /dev/null +++ b/kernel-devel/module-basics/pres_module-basics_de.tex @@ -0,0 +1,135 @@ +\documentclass{beamer} +\usetheme{linutronix} +\usepackage{german} +\usepackage[utf8]{inputenc} +\usepackage{pgf} +\usepackage{graphicx} +\usepackage{psfrag} +\usepackage{listings} + +\title{Treiber Modul Grundlagen} +\institute{Linutronix GmbH} + +\begin{document} +\lstset{language=[ANSI]C} + +\maketitle + +% ----- Slide 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} + +% ----- Slide Aufbau (fort.) ------------------ +\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"); +\end{lstlisting} +\end{tiny} +\end{itemize} +\end{frame} + +% ----- Slide Rumpf Treiber ------------------ +\begin{frame}[fragile] +\frametitle{Rumpf Treiber} +\begin{tiny} +\lstinputlisting{vain/vain.c} +\end{tiny} +\end{frame} + +% ----- Slide Makefile ------------------ +\begin{frame}[fragile] +\frametitle{Makefile} +\begin{scriptsize} +\lstinputlisting[language=make]{vain/Makefile} +\end{scriptsize} +\end{frame} + +% ----- Slide build ------------------ +\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} + +\end{document} diff --git a/kernel-devel/module-basics/vain/Makefile b/kernel-devel/module-basics/vain/Makefile new file mode 100644 index 0000000..553d4c8 --- /dev/null +++ b/kernel-devel/module-basics/vain/Makefile @@ -0,0 +1,13 @@ +# If KERNELRELEASE is defined, we've been invoked from the +# kernel build system and can use its language. +ifneq ($(KERNELRELEASE),) + obj-m := vain.o + +# Otherwise we were called directly from the command +# line; invoke the kernel build system. +else + KERNELDIR ?= /lib/modules/$(shell uname -r)/build + PWD := $(shell pwd) +default: + $(MAKE) -C $(KERNELDIR) M=$(PWD) modules +endif
\ No newline at end of file diff --git a/kernel-devel/module-basics/vain/vain.c b/kernel-devel/module-basics/vain/vain.c new file mode 100644 index 0000000..6b27033 --- /dev/null +++ b/kernel-devel/module-basics/vain/vain.c @@ -0,0 +1,20 @@ +#include <linux/init.h> +#include <linux/module.h> + +static int vain_init(void) +{ + printk(KERN_INFO "vain_init: done\n"); + return 0; +} + +static void vain_exit(void) +{ + printk(KERN_INFO "vain_exit: done\n"); +} + +module_init(vain_init); +module_exit(vain_exit); + +MODULE_AUTHOR("Benedikt Spranger <b.spranger@linutronix.de>"); +MODULE_DESCRIPTION("a more or less useless module"); +MODULE_LICENSE("GPL v2"); |
