summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@linutronix.de>2018-04-19 21:33:39 +0200
committerManuel Traut <manut@linutronix.de>2018-04-19 21:44:46 +0200
commit936b29623fad95e8e9aea2f44fe30d75c710c0d4 (patch)
tree081e1384e8d2406ccbd23a82d63d1d9e81b53dab
parent322bac473ace9c22d638d9aaa4fa9faab1703d01 (diff)
kernel-basics/module work in linux source tree
instead of having a out-of-tree kernel module (i hate them). Signed-off-by: Manuel Traut <manut@linutronix.de>
-rw-r--r--kernel-devel/module-basics/pres_module-basics_en.tex56
1 files changed, 45 insertions, 11 deletions
diff --git a/kernel-devel/module-basics/pres_module-basics_en.tex b/kernel-devel/module-basics/pres_module-basics_en.tex
index 6ee58f5..2c41d49 100644
--- a/kernel-devel/module-basics/pres_module-basics_en.tex
+++ b/kernel-devel/module-basics/pres_module-basics_en.tex
@@ -65,11 +65,43 @@ MODULE_VERSION("0815");
\end{tiny}
\end{frame}
-\subsubsection{Makefile}
+\subsubsection{Kernel Build System}
+\begin{frame}[fragile]
+\frametitle{Kconfig}
+drivers/staging/Kconfig:
+\begin{scriptsize}
+ \begin{lstlisting}
+..
+source "drivers/staging/vain/Kconfig"
+..
+ \end{lstlisting}
+\end{scriptsize}
+drivers/staging/vain/Kconfig:
+\begin{scriptsize}
+ \begin{lstlisting}
+config VAIN
+ tristate "vain test driver"
+ ---help---
+ Say Y here if you want the VAIN Test Driver in your kernel.
+ \end{lstlisting}
+\end{scriptsize}
+results in CONFIG\_VAIN = ['y'|'n'|'m']
+\end{frame}
\begin{frame}[fragile]
\frametitle{Makefile}
+drivers/staging/Makefile:
+\begin{scriptsize}
+ \begin{lstlisting}
+..
+obj-$(CONFIG_VAIN) += vain/
+..
+ \end{lstlisting}
+\end{scriptsize}
+drivers/staging/vain/Makefile:
\begin{scriptsize}
-\lstinputlisting[language=make]{kernel-devel/module-basics/vain/Makefile}
+ \begin{lstlisting}
+obj-$(CONFIG_VAIN) += vain.o
+ \end{lstlisting}
\end{scriptsize}
\end{frame}
@@ -79,23 +111,25 @@ MODULE_VERSION("0815");
\item Build
\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
+$ make menuconfig
+\end{verbatim}
+and select Drivers / Staging / vain test driver with 'm' to be built as a
+module.
+\begin{verbatim}
+...
+ CC [M] 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'
-$
+ CC vain.mod.o
+ LD [M] vain.ko
+...
\end{verbatim}
\end{tiny}
\pause
\item Load
\begin{tiny}
\begin{verbatim}
-# insmod ./vain.ko
+# insmod drivers/staging/vain/vain.ko
vain_init: done
#
\end{verbatim}