From 6fb0950420424ff27f6aa89429a763409b088ed6 Mon Sep 17 00:00:00 2001
From: Manuel Traut <manut@linutronix.de>
Date: Wed, 26 Jan 2011 18:49:31 +0100
Subject: added kernel devel

Signed-off-by: Manuel Traut <manut@linutronix.de>
---
 kernel-devel/uio-driver/handout_uio-driver_de.tex | 32 +++++++++--------------
 1 file changed, 13 insertions(+), 19 deletions(-)

(limited to 'kernel-devel/uio-driver/handout_uio-driver_de.tex')

diff --git a/kernel-devel/uio-driver/handout_uio-driver_de.tex b/kernel-devel/uio-driver/handout_uio-driver_de.tex
index 546c7fe..f25b538 100644
--- a/kernel-devel/uio-driver/handout_uio-driver_de.tex
+++ b/kernel-devel/uio-driver/handout_uio-driver_de.tex
@@ -1,12 +1,6 @@
-\documentclass{lxarticle}
-\usepackage{german}
-\usepackage[utf8]{inputenc}
-\usepackage{lxheaders}
-\usepackage{lxextras}
+\input{confighandout}
 
-\begin{document}
-
-\section*{Linux-Treiber im Userspace}
+\subsection{Linux-Treiber im Userspace}
 
 Das ab Linux 2.6.23 im stabilen Kernel verfügbare Userspace-I/O-Framework
 (UIO) ermöglicht, bestimmte Treiber fast vollständig in den Userspace zu
@@ -64,7 +58,7 @@ einkompiliert wird, muss dieser Lizenz genügen, das heißt, der Sourcecode muss
 (meist illegale) Tricks angewandt, um dieser Bedingung der GPL zu entgehen und
 ihren Kernelcode unter Verschluss zu halten.
 
-\subsection*{UIO löst Probleme}
+\subsubsection{UIO löst Probleme}
 
 Die geschilderte Problematik führte bereits vor längerer Zeit zu Überlegungen,
 zumindest Teile eines Treibers in den Userspace zu verlagern. I/O-Hardware
@@ -118,7 +112,7 @@ Eintreffen des nächsten Interrupts nicht fertig wird, so ist das zumindest
 softwaretechnisch kein Problem: Anhand des gelesenen Werts beim nächsten
 \cmd{read()} erkennen Sie, wie viele Interrupts Sie verpasst haben.
 
-\subsection*{GPL oder nicht GPL}
+\subsubsection{GPL oder nicht GPL}
 
 Der Linux-Kernel einschließlich aller enthaltenen Module ist unter der GPL
 lizensiert. Programme im Linux-Userspace unterliegen solchen Einschränkungen
@@ -151,7 +145,7 @@ zu verhindern, bewusst gegen die GPL zu verstoßen oder ganz auf Linux zu
 verzichten. Durch UIO wird an dieser Stelle ein gangbarer und legaler Ausweg
 geschaffen.
 
-\subsection*{Konventionelle Treiber...}
+\subsubsection{Konventionelle Treiber...}
 
 Bisherige Gerätetreiber sind vollständig im Kernel integriert. Die
 Schnittstelle zum Userspace besteht typischerweise aus einer Gerätedatei, auf
@@ -225,7 +219,7 @@ Aufnahme in den offiziellen Mainline-Kernel haben. Dadurch haben die
 Programmierer dann während der gesamten Laufzeit des Produkts zusätzlich das
 Problem, diesen wackligen Treiber out-of-tree warten zu müssen. 
 
-\subsection*{...und UIO-Treiber}
+\subsubsection{...und UIO-Treiber}
 
 Sieht man sich Gerätetreiber etwas genauer an, so stellt man fest, dass es
 stets wiederkehrende Aufgabenstellungen gibt. Zum einen hat die Hardware
@@ -301,7 +295,7 @@ in der Regel root-Rechte des Anwenders erfordert und bei Fehlern zu einem
 völlig unbrauchbaren System führt. Bei einem UIO-Treiber unterscheidet sich
 ein Update des Treibers durch nichts von einem Update der Anwender-Applikation.
 
-\subsection*{Wartungsvertrag}
+\subsubsection{Wartungsvertrag}
 
 Ein Treiber will gewartet sein. Bei industriellen Geräten findet man oft die
 Situation, dass ein Gerät über einen längeren Zeitraum mit der selben
@@ -341,7 +335,7 @@ Linux-Kernel-Mailingliste um die Aufnahme desselben zu bitten. Die Mühe lohnt
 sich: Zukünftige Kernel haben die Unterstützung für ihr Produkt schon
 eingebaut, Versionskonflikte oder das mühsame Kernel-Patchen entfällt. 
 
-\subsection*{Los geht's...}
+\subsubsection{Los geht's...}
 
 Wie sieht nun ein UIO-Treiber konkret aus? Betrachten wir dazu einen Treiber
 für eine PCI-Karte. Die folgenden Beispiele sind Auszüge aus dem bereits
@@ -463,7 +457,7 @@ Ausführliche Dokumentation findet sich auch in den Kernel-Quellen in
 \cmd{Documentation/DocBook/uio-howto.tmpl}; mit \cmd{make htmldocs} erstellt
 man daraus eine lesbare Form. 
 
-\subsection*{Testen mit lsuio}
+\subsubsection{Testen mit lsuio}
 
 Hat man einen UIO-Kerneltreiber geladen, so führt der erste Weg ins Verzeichnis
 \cmd{/sys/class/uio/uio0}, wo man überprüft, ob alle Dateien die erwarteten
@@ -492,7 +486,7 @@ Durch Überprüfen der Dateien \cmd{name} und \cmd{version} in den Verzeichnisse
 unterhalb von \cmd{/sys/class/uio} kann man diese Informationen auf sichere
 Weise gewinnen. 
 
-\subsection*{Weiter geht's im Userspace}
+\subsubsection{Weiter geht's im Userspace}
 
 Der Userspace-Teil des Treibers wird zunächst über das sysfs den Namen des
 zuständigen Device-Files ermitteln. Im Folgenden wird der Einfachkeit halber
@@ -549,7 +543,7 @@ steht Experimenten kaum etwas im Weg. Sie können jedenfalls keine
 schlimmeren Abstürze verursachen als beim Programmieren jeder anderen
 Anwender-Applikation.
 
-\subsection*{UIO oder nicht UIO}
+\subsubsection{UIO oder nicht UIO}
 
 Sollen jetzt in Zukunft alle Treiber mittels UIO realisiert werden? Sicher
 nicht. UIO eignet sich sehr gut für Hardware, die Interrupts erzeugt, deren
@@ -578,7 +572,7 @@ weite Verbreitung von X.org bereits ein anderer Standard etabliert, der im
 beispielsweise schnelle A/D-Wandler, könnten DMA benötigen. Die Zukunft wird
 zeigen, ob an dieser Stelle Nachfrage besteht.
 
-\subsection*{Fazit}
+\subsubsection{Fazit}
 
 Durch das seit Kernel-Version 2.6.23 in Linux verfügbare
 Userspace I/O-Framework wird es besonders für Industriebetriebe erheblich
@@ -599,4 +593,4 @@ Realtime-Preemption-Patch einspielt, so erhält man ein einfach zu
 programmierendes und vollständig aus Open Source-Software bestehendes System
 für die Automatisierungstechnik.
 
-\end{document}
+\input{tailhandout}
-- 
cgit v1.2.3

