summaryrefslogtreecommitdiff
path: root/kernel-devel/uio-driver
diff options
context:
space:
mode:
Diffstat (limited to 'kernel-devel/uio-driver')
-rw-r--r--kernel-devel/uio-driver/Makefile4
-rw-r--r--kernel-devel/uio-driver/handout_uio-driver_de.tex32
-rw-r--r--kernel-devel/uio-driver/images/greg-all-hardware.jpgbin76025 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/greg-kernel-org.jpgbin75068 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/hjk-desperate.jpgbin122993 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/ioctl-vs-uio_de.pngbin35842 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/ioctl-vs-uio_de.svg383
-rw-r--r--kernel-devel/uio-driver/images/ioctl-vs-uio_en.pngbin106503 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/konventioneller-treiber_de.pngbin34106 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/konventioneller-treiber_de.svg332
-rw-r--r--kernel-devel/uio-driver/images/konventioneller-treiber_en.pngbin104184 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/uio-treiber_de.pngbin43114 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/images/uio-treiber_de.svg433
-rw-r--r--kernel-devel/uio-driver/images/uio-treiber_en.pngbin126807 -> 0 bytes
-rw-r--r--kernel-devel/uio-driver/pres_uio-driver_en.tex52
15 files changed, 27 insertions, 1209 deletions
diff --git a/kernel-devel/uio-driver/Makefile b/kernel-devel/uio-driver/Makefile
index 4663d52..d641258 100644
--- a/kernel-devel/uio-driver/Makefile
+++ b/kernel-devel/uio-driver/Makefile
@@ -1,7 +1,7 @@
all:
for pdf in `ls -1 *.tex` ; do \
- pdflatex $$pdf; \
- pdflatex $$pdf; \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
done
clean:
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}
diff --git a/kernel-devel/uio-driver/images/greg-all-hardware.jpg b/kernel-devel/uio-driver/images/greg-all-hardware.jpg
deleted file mode 100644
index f7ab989..0000000
--- a/kernel-devel/uio-driver/images/greg-all-hardware.jpg
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/greg-kernel-org.jpg b/kernel-devel/uio-driver/images/greg-kernel-org.jpg
deleted file mode 100644
index dbfb915..0000000
--- a/kernel-devel/uio-driver/images/greg-kernel-org.jpg
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/hjk-desperate.jpg b/kernel-devel/uio-driver/images/hjk-desperate.jpg
deleted file mode 100644
index 740f574..0000000
--- a/kernel-devel/uio-driver/images/hjk-desperate.jpg
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/ioctl-vs-uio_de.png b/kernel-devel/uio-driver/images/ioctl-vs-uio_de.png
deleted file mode 100644
index 0989d07..0000000
--- a/kernel-devel/uio-driver/images/ioctl-vs-uio_de.png
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/ioctl-vs-uio_de.svg b/kernel-devel/uio-driver/images/ioctl-vs-uio_de.svg
deleted file mode 100644
index a913a69..0000000
--- a/kernel-devel/uio-driver/images/ioctl-vs-uio_de.svg
+++ /dev/null
@@ -1,383 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="210mm"
- height="297mm"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/hans/linutronix/articles/uio-ct-artikel_v2"
- sodipodi:docname="ioctl-vs-uio.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/hans/linutronix/articles/uio-ct-artikel_v2/ioctl-vs-uio.png"
- inkscape:export-xdpi="100"
- inkscape:export-ydpi="100">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Mend"
- style="overflow:visible;">
- <path
- id="path3262"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.4) rotate(180) translate(10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mend"
- style="overflow:visible;">
- <path
- id="path3280"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) rotate(180) translate(0,0)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleOutM"
- style="overflow:visible">
- <path
- id="path3254"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.4)" />
- </marker>
- <marker
- inkscape:stockid="TriangleInM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleInM"
- style="overflow:visible">
- <path
- id="path3245"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(-0.4)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Mstart"
- style="overflow:visible">
- <path
- id="path3159"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.4) translate(10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3153"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path3177"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) translate(0,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4"
- inkscape:cx="246.67635"
- inkscape:cy="792.61315"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-width="1672"
- inkscape:window-height="977"
- inkscape:window-x="0"
- inkscape:window-y="0">
- <sodipodi:guide
- orientation="vertical"
- position="69.285714"
- id="guide3134" />
- <sodipodi:guide
- orientation="vertical"
- position="372.85714"
- id="guide3136" />
- <sodipodi:guide
- orientation="horizontal"
- position="956.42857"
- id="guide3140" />
- <sodipodi:guide
- orientation="horizontal"
- position="772.85714"
- id="guide3142" />
- <sodipodi:guide
- orientation="horizontal"
- position="631.42857"
- id="guide2349" />
- <sodipodi:guide
- orientation="horizontal"
- position="682.14286"
- id="guide2351" />
- <sodipodi:guide
- orientation="vertical"
- position="665"
- id="guide2353" />
- <sodipodi:guide
- orientation="horizontal"
- position="587.14286"
- id="guide2357" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Ebene 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220484;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.06220472, 2.06220472;stroke-dashoffset:0;stroke-opacity:1"
- d="M 67.857143,393.07647 L 665,393.07647"
- id="path2160"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220484;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.06220472, 2.06220472;stroke-dashoffset:0;stroke-opacity:1"
- d="M 68.214289,165.93362 L 664.64285,165.93362"
- id="path3138"
- sodipodi:nodetypes="cc" />
- <rect
- style="fill:#fc5400;fill-opacity:1;stroke:#000000;stroke-width:2.06220484;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3146"
- width="199.28641"
- height="100.71439"
- x="272.45969"
- y="180.93361"
- ry="10"
- rx="10" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="68.571426"
- y="283.07645"
- id="text3398"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3400"
- x="68.571426"
- y="283.07645">Kernelspace</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="68.520004"
- y="146.75792"
- id="text3402"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan2243"
- x="68.520004"
- y="146.75792">Hardware</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="68.520004"
- y="446.22791"
- id="text3408"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3412"
- x="68.520004"
- y="446.22791">Userspace</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="-267.33499"
- y="265.69397"
- id="text3436"
- sodipodi:linespacing="100%"
- transform="matrix(0,-1,1,0,0,0)"><tspan
- sodipodi:role="line"
- id="tspan3440"
- x="-267.33499"
- y="265.69397">Treiber</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="333.15143"
- y="465.7879"
- id="text3442"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan2247"
- x="333.15143"
- y="465.7879">ioctl()</tspan></text>
- <rect
- style="fill:#fc9900;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3492"
- width="99.999985"
- height="49.285713"
- x="323.21429"
- y="368.43359"
- rx="10"
- ry="10" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="331.07361"
- y="398.45221"
- id="text3494"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan2245"
- x="331.07361"
- y="398.45221">syscall</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="278.52625"
- y="256.12363"
- id="text2249"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan2253"
- x="278.52625"
- y="256.12363">copy_from_user()</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="316.38339"
- y="214.69505"
- id="text2255"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan2259"
- x="316.38339"
- y="214.69505">iowrite()</tspan></text>
- <rect
- style="fill:#fc9900;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2261"
- width="99.999985"
- height="49.285713"
- x="322.85718"
- y="299.14789"
- rx="10"
- ry="10" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="355.0022"
- y="329.1665"
- id="text2263"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan2267"
- x="355.0022"
- y="329.1665">VFS</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 373.57142,339.33983 L 373.57142,381.48268"
- id="path3470"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 373.57142,267.91124 L 373.57142,310.05409"
- id="path2269"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 372.85714,407.19696 L 372.85714,449.33981"
- id="path2271"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 374.28571,152.91125 L 374.28571,195.0541"
- id="path2273"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 587.14285,449.50503 L 587.14285,154.50503"
- id="path2277"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="547.81189"
- y="465.4093"
- id="text3450"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3456"
- x="547.81189"
- y="465.4093">a[n]=b;</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220484;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.06220472, 2.06220472;stroke-dashoffset:0;stroke-opacity:1"
- d="M 497.14286,492.67901 L 497.14286,96.964715"
- id="path3458"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="306.89368"
- y="95.47361"
- id="text3460"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3464"
- x="306.89368"
- y="95.47361">a) mit ioctl():</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="507.18765"
- y="95.509331"
- id="text3466"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3470"
- x="507.18765"
- y="95.509331">b) mit mmap():</tspan></text>
- </g>
-</svg>
diff --git a/kernel-devel/uio-driver/images/ioctl-vs-uio_en.png b/kernel-devel/uio-driver/images/ioctl-vs-uio_en.png
deleted file mode 100644
index 8536934..0000000
--- a/kernel-devel/uio-driver/images/ioctl-vs-uio_en.png
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/konventioneller-treiber_de.png b/kernel-devel/uio-driver/images/konventioneller-treiber_de.png
deleted file mode 100644
index cbca8bc..0000000
--- a/kernel-devel/uio-driver/images/konventioneller-treiber_de.png
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/konventioneller-treiber_de.svg b/kernel-devel/uio-driver/images/konventioneller-treiber_de.svg
deleted file mode 100644
index 5dbd773..0000000
--- a/kernel-devel/uio-driver/images/konventioneller-treiber_de.svg
+++ /dev/null
@@ -1,332 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="210mm"
- height="297mm"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/hans/linutronix/articles/uio-ct-artikel/bilder"
- sodipodi:docname="konventioneller-treiber.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/hans/linutronix/articles/uio-ct-artikel/bilder/konventioneller-treiber.png"
- inkscape:export-xdpi="100"
- inkscape:export-ydpi="100">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="TriangleOutM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleOutM"
- style="overflow:visible">
- <path
- id="path3254"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.4)" />
- </marker>
- <marker
- inkscape:stockid="TriangleInM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleInM"
- style="overflow:visible">
- <path
- id="path3245"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(-0.4)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Mstart"
- style="overflow:visible">
- <path
- id="path3159"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.4) translate(10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3153"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path3177"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) translate(0,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4"
- inkscape:cx="246.67635"
- inkscape:cy="796.87607"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-width="1672"
- inkscape:window-height="977"
- inkscape:window-x="0"
- inkscape:window-y="0">
- <sodipodi:guide
- orientation="vertical"
- position="69.285714"
- id="guide3134" />
- <sodipodi:guide
- orientation="vertical"
- position="633.57143"
- id="guide3136" />
- <sodipodi:guide
- orientation="horizontal"
- position="956.42857"
- id="guide3140" />
- <sodipodi:guide
- orientation="horizontal"
- position="872.85714"
- id="guide3142" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Ebene 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220484;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.06220472, 2.06220472;stroke-dashoffset:0;stroke-opacity:1"
- d="M 67.142857,339.50504 L 637.14285,339.50504"
- id="path2160"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220484;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.06220472, 2.06220472;stroke-dashoffset:0;stroke-opacity:1"
- d="M 66.785718,268.79076 L 639.64285,268.79076"
- id="path3138"
- sodipodi:nodetypes="cc" />
- <rect
- style="fill:#f2f000;fill-opacity:1;stroke:#000000;stroke-width:2.06220484;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3144"
- width="253.57143"
- height="158.57143"
- x="215.71428"
- y="96.964714" />
- <rect
- style="fill:#fc5400;fill-opacity:1;stroke:#000000;stroke-width:2.06220484;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3146"
- width="120"
- height="158.57143"
- x="512.85712"
- y="96.647896"
- ry="10"
- rx="10" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.71429,123.07647 L 520,123.07647"
- id="path3148" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,144.50504 L 519.47763,144.50504"
- id="path3352" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,165.21932 L 519.47763,165.21932"
- id="path3354" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,186.64789 L 519.47763,186.64789"
- id="path3356" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19191,207.36218 L 519.47762,207.36218"
- id="path3358" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,228.07647 L 519.47763,228.07647"
- id="path3360" />
- <rect
- style="fill:#fc9900;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3382"
- width="122.14286"
- height="49.285713"
- x="511.42856"
- y="279.50504"
- rx="10"
- ry="10" />
- <rect
- style="fill:#0fe400;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3384"
- width="418.57144"
- height="90"
- x="215"
- y="371.64789"
- rx="10"
- ry="10" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 534.28571,331.83982 L 534.28571,388.98267"
- id="path3386"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 571.42858,332.55409 L 571.42858,388.98266"
- id="path3388"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 606.42857,331.83981 L 606.42857,388.98266"
- id="path3390"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.54251957;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#TriangleInM);marker-end:url(#TriangleOutM);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 575.00001,256.64789 L 575.00001,280.21932"
- id="path3392" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="68.571426"
- y="179.50504"
- id="text3398"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3400"
- x="68.571426"
- y="179.50504">Kernelspace</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="67.805717"
- y="310.32935"
- id="text3402"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3406"
- x="67.805717"
- y="310.32935">Interface</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="67.805717"
- y="421.04361"
- id="text3408"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3412"
- x="67.805717"
- y="421.04361">Userspace</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="356.19702"
- y="421.7579"
- id="text3414"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3418"
- x="356.19702"
- y="421.7579">Applikation</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="328.55521"
- y="159.61504"
- id="text3420"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3430"
- x="331.32864"
- y="159.61504">interne </tspan><tspan
- sodipodi:role="line"
- id="tspan3432"
- x="328.55521"
- y="179.61504">Kernelfunktionen</tspan><tspan
- sodipodi:role="line"
- id="tspan3434"
- x="328.55521"
- y="199.61504">(instabiles API)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="538.3443"
- y="180.13646"
- id="text3436"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3440"
- x="538.3443"
- y="180.13646">Treiber</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="524.28571"
- y="310.21933"
- id="text3442"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3444"
- x="524.28571"
- y="310.21933">/dev/xyz</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="533.32349"
- y="408.64072"
- id="text3446"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3450"
- x="533.32349"
- y="408.64072">read()</tspan><tspan
- sodipodi:role="line"
- id="tspan3452"
- x="533.32349"
- y="428.64072">write()</tspan><tspan
- sodipodi:role="line"
- id="tspan3454"
- x="533.32349"
- y="448.64072">ioctl()</tspan></text>
- </g>
-</svg>
diff --git a/kernel-devel/uio-driver/images/konventioneller-treiber_en.png b/kernel-devel/uio-driver/images/konventioneller-treiber_en.png
deleted file mode 100644
index bea54da..0000000
--- a/kernel-devel/uio-driver/images/konventioneller-treiber_en.png
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/uio-treiber_de.png b/kernel-devel/uio-driver/images/uio-treiber_de.png
deleted file mode 100644
index 9e18a06..0000000
--- a/kernel-devel/uio-driver/images/uio-treiber_de.png
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/images/uio-treiber_de.svg b/kernel-devel/uio-driver/images/uio-treiber_de.svg
deleted file mode 100644
index a1cc780..0000000
--- a/kernel-devel/uio-driver/images/uio-treiber_de.svg
+++ /dev/null
@@ -1,433 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="210mm"
- height="297mm"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/hans/linutronix/articles/uio-ct-artikel_v2"
- sodipodi:docname="uio-treiber.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/hans/linutronix/articles/uio-ct-artikel_v2/uio-treiber.png"
- inkscape:export-xdpi="100"
- inkscape:export-ydpi="100">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="TriangleOutM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleOutM"
- style="overflow:visible">
- <path
- id="path3254"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.4)" />
- </marker>
- <marker
- inkscape:stockid="TriangleInM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleInM"
- style="overflow:visible">
- <path
- id="path3245"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(-0.4)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Mstart"
- style="overflow:visible">
- <path
- id="path3159"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.4) translate(10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3153"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path3177"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) translate(0,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4"
- inkscape:cx="246.67635"
- inkscape:cy="749.98402"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-width="1672"
- inkscape:window-height="977"
- inkscape:window-x="0"
- inkscape:window-y="0">
- <sodipodi:guide
- orientation="vertical"
- position="69.285714"
- id="guide3134" />
- <sodipodi:guide
- orientation="vertical"
- position="632.14286"
- id="guide3136" />
- <sodipodi:guide
- orientation="horizontal"
- position="956.42857"
- id="guide3140" />
- <sodipodi:guide
- orientation="horizontal"
- position="772.85714"
- id="guide3142" />
- <sodipodi:guide
- orientation="horizontal"
- position="631.42857"
- id="guide2349" />
- <sodipodi:guide
- orientation="horizontal"
- position="682.14286"
- id="guide2351" />
- <sodipodi:guide
- orientation="vertical"
- position="404.28571"
- id="guide2353" />
- <sodipodi:guide
- orientation="horizontal"
- position="580.71429"
- id="guide2357" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Ebene 1"
- inkscape:groupmode="layer"
- id="layer1">
- <rect
- style="fill:#0fe400;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2347"
- width="227.85715"
- height="99.285751"
- x="404.28571"
- y="371.29074"
- rx="10"
- ry="10" />
- <path
- style="fill:#f5cb00;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220472;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
- d="M 469.28571,97.362184 L 469.28571,255.21932 L 503.57143,255.21932 L 503.57143,198.79075 L 632.14286,198.79075 L 632.14286,97.362184 L 469.28571,97.362184 z "
- id="path3458"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220484;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.06220472, 2.06220472;stroke-dashoffset:0;stroke-opacity:1"
- d="M 67.142857,339.50504 L 637.14285,339.50504"
- id="path2160"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.06220484;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.06220472, 2.06220472;stroke-dashoffset:0;stroke-opacity:1"
- d="M 66.785718,268.79076 L 639.64285,268.79076"
- id="path3138"
- sodipodi:nodetypes="cc" />
- <rect
- style="fill:#f2f000;fill-opacity:1;stroke:#000000;stroke-width:2.06220484;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3144"
- width="253.57143"
- height="158.57143"
- x="215.71428"
- y="96.964714" />
- <rect
- style="fill:#fc5400;fill-opacity:1;stroke:#000000;stroke-width:2.06220484;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3146"
- width="120.71497"
- height="47.142963"
- x="512.14288"
- y="208.07648"
- ry="10"
- rx="10" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.71429,123.07647 L 487.14286,123.07647"
- id="path3148"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,144.50504 L 488.04906,144.50504"
- id="path3352"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,165.21932 L 488.04906,165.21932"
- id="path3354"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,186.64789 L 488.04906,186.64789"
- id="path3356"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19191,207.36218 L 487.33476,207.36218"
- id="path3358"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 445.19192,228.07647 L 487.33477,228.07647"
- id="path3360"
- sodipodi:nodetypes="cc" />
- <rect
- style="fill:#fc9900;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3382"
- width="122.14286"
- height="49.285713"
- x="511.42856"
- y="279.50504"
- rx="10"
- ry="10" />
- <rect
- style="fill:#0fe400;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3384"
- width="165.71431"
- height="98.571426"
- x="215"
- y="371.64789"
- rx="10"
- ry="10" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 534.28571,331.83982 L 534.28571,388.98267"
- id="path3386"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 571.42858,332.55409 L 571.42858,388.98266"
- id="path3388"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 606.42857,331.83981 L 606.42857,388.98266"
- id="path3390"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.54251957;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#TriangleInM);marker-end:url(#TriangleOutM);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 575.00001,256.64789 L 575.00001,280.21932"
- id="path3392" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="68.571426"
- y="179.50504"
- id="text3398"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3400"
- x="68.571426"
- y="179.50504">Kernelspace</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="67.805717"
- y="310.32935"
- id="text3402"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3406"
- x="67.805717"
- y="310.32935">Interface</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="69.234291"
- y="425.32932"
- id="text3408"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3412"
- x="69.234291"
- y="425.32932">Userspace</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="231.19704"
- y="426.7579"
- id="text3414"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3484"
- x="231.19704"
- y="426.7579">Applikation</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="328.55521"
- y="159.61504"
- id="text3420"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3430"
- x="331.32864"
- y="159.61504">interne </tspan><tspan
- sodipodi:role="line"
- id="tspan3432"
- x="328.55521"
- y="179.61504">Kernelfunktionen</tspan><tspan
- sodipodi:role="line"
- id="tspan3434"
- x="328.55521"
- y="199.61504">(instabiles API)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="536.91577"
- y="237.99361"
- id="text3436"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3440"
- x="536.91577"
- y="237.99361">Treiber</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="517.14282"
- y="310.93362"
- id="text3442"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3456"
- x="517.14282"
- y="310.93362">/dev/uioX</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="536.1806"
- y="415.06927"
- id="text3446"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3474"
- x="536.1806"
- y="415.06927">read()</tspan><tspan
- sodipodi:role="line"
- id="tspan3476"
- x="536.1806"
- y="435.06927">mmap()</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="564.77295"
- y="132.99361"
- id="text3460"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3466"
- x="564.77295"
- y="132.99361">UIO-</tspan><tspan
- sodipodi:role="line"
- id="tspan3468"
- x="564.77295"
- y="152.99361">Framework</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 525.71428,179.33982 L 525.71428,221.48267"
- id="path3470"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 616.42857,179.33982 L 616.42857,221.48267"
- id="path3472"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:FreeSans"
- x="431.8024"
- y="425.4736"
- id="text3486"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3490"
- x="431.8024"
- y="425.4736">Treiber</tspan></text>
- <rect
- style="fill:#fc9900;fill-opacity:1;stroke:#000000;stroke-width:2.41653538;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3492"
- width="99.999985"
- height="49.285713"
- x="404.64285"
- y="279.86218"
- rx="10"
- ry="10" />
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch"
- x="422.50214"
- y="309.16647"
- id="text3494"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan3498"
- x="422.50214"
- y="309.16647">sysfs</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.54251957;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#TriangleInM);marker-end:url(#TriangleOutM);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 485.71429,255.57646 L 485.71429,279.14789"
- id="path3500" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.41653538;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 458.57142,331.83982 L 458.57142,388.98267"
- id="path3502"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.54251957;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#TriangleInM);marker-end:url(#TriangleOutM);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 381.07143,421.64789 L 404.64286,421.64789"
- id="path2355" />
- </g>
-</svg>
diff --git a/kernel-devel/uio-driver/images/uio-treiber_en.png b/kernel-devel/uio-driver/images/uio-treiber_en.png
deleted file mode 100644
index caa2152..0000000
--- a/kernel-devel/uio-driver/images/uio-treiber_en.png
+++ /dev/null
Binary files differ
diff --git a/kernel-devel/uio-driver/pres_uio-driver_en.tex b/kernel-devel/uio-driver/pres_uio-driver_en.tex
index ca9ff44..b16045f 100644
--- a/kernel-devel/uio-driver/pres_uio-driver_en.tex
+++ b/kernel-devel/uio-driver/pres_uio-driver_en.tex
@@ -1,23 +1,15 @@
-\documentclass{beamer}
-\usetheme{linutronix}
-\usepackage{german}
-\usepackage[utf8]{inputenc}
-\usepackage{pgf}
-\usepackage{graphicx}
+\input{configpres}
\title{The Userspace I/O Framework (UIO)}
-\institute{Linutronix GmbH}
-
-\begin{document}
-
\maketitle
-% ----- Slide "Desperate programmer" ------------------
+\subsection{The Userspace I/O Framework (UIO)}
+
\begin{frame}
\includegraphics[width=11cm]{images/hjk-desperate.jpg}
\end{frame}
-% ----- Slide "Linux device drivers" ------------------
+\subsubsection{Linux device drivers}
\begin{frame}
\frametitle{Linux device drivers}
\pause
@@ -28,7 +20,6 @@
\end{itemize}
\end{frame}
-% ----- Slide "Standard devices" -----------------------
\begin{frame}
\frametitle{Standard devices}
\pause
@@ -46,7 +37,6 @@
\end{itemize}
\end{frame}
-% ----- Slide "Problematic devices" -------------------
\begin{frame}
\frametitle{Problematic devices}
\pause
@@ -66,17 +56,15 @@
\end{itemize}
\end{frame}
-% ----- Slide "In-kernel driver" ------------------
\begin{frame}
\includegraphics[width=11cm]{images/konventioneller-treiber_en.png}
\end{frame}
-% ----- Slide "UIO driver" ------------------
\begin{frame}
\includegraphics[width=11cm]{images/uio-treiber_en.png}
\end{frame}
-% ----- Slide "How UIO works" --------------------------
+\subsubsection{Structure}
\begin{frame}
\frametitle{How UIO works}
\pause
@@ -96,7 +84,6 @@
\end{itemize}
\end{frame}
-% ----- Slide "Kernel: interrupt handler" --------------------------
\begin{frame}[fragile]
\frametitle{Kernel: interrupt handler}
\begin{verbatim}
@@ -113,7 +100,6 @@ irqreturn_t my_handler(int irq, struct uio_info *dev_info)
\end{verbatim}
\end{frame}
-% ----- Slide "Kernel: probe() function" --------------------------
\begin{frame}[fragile]
\frametitle{Kernel: probe() function}
\begin{verbatim}
@@ -128,7 +114,6 @@ int pci_probe(struct pci_dev *dev,
\end{verbatim}
\end{frame}
-% ----- Slide "Kernel: struct uio_info" --------------------------
\begin{frame}[fragile]
\frametitle{Kernel: struct uio\_info}
\begin{verbatim}
@@ -148,7 +133,6 @@ struct uio_info {
\end{verbatim}
\end{frame}
-% ----- Slide "Kernel: struct uio_mem" --------------------------
\begin{frame}[fragile]
\frametitle{Kernel: struct uio\_mem}
\begin{verbatim}
@@ -162,7 +146,7 @@ struct uio_mem {
\end{verbatim}
\end{frame}
-% ----- Slide "Userspace part of driver" --------------
+\subsubsection{Userspace}
\begin{frame}
\frametitle{Userspace: Overview}
\pause
@@ -181,7 +165,6 @@ struct uio_mem {
\end{itemize}
\end{frame}
-% ----- Slide "Hello UIO world" --------------
\begin{frame}[fragile]
\frametitle{Hello UIO world}
\pause
@@ -196,7 +179,7 @@ while (read(fd, &irq_cnt, 4)) {
\end{verbatim}
\end{frame}
-% ----- Slide "Performance considerations" --------------
+\subsubsection{Performance}
\begin{frame}
\frametitle{Performance considerations}
\pause
@@ -207,12 +190,11 @@ while (read(fd, &irq_cnt, 4)) {
\end{itemize}
\end{frame}
-% ----- Slide "ioctl vs. UIO" ------------------
\begin{frame}
\includegraphics[width=10cm]{images/ioctl-vs-uio_en.png}
\end{frame}
-% ----- Slide "Publish your driver!" --------------
+\subsubsection{Publish your driver}
\begin{frame}
\frametitle{Publish your driver!}
\pause
@@ -241,7 +223,7 @@ while (read(fd, &irq_cnt, 4)) {
\includegraphics[width=11cm]{images/greg-kernel-org.jpg}
\end{frame}
-% ----- Slide "Legal issues" --------------------------
+\subsubsection{Legal issues}
\begin{frame}
\frametitle{Legal issues}
\pause
@@ -254,7 +236,7 @@ while (read(fd, &irq_cnt, 4)) {
\end{itemize}
\end{frame}
-% ----- Slide "Tools" --------------------------
+\subsubsection{Tools}
\begin{frame}
\frametitle{Tools}
\pause
@@ -265,7 +247,6 @@ while (read(fd, &irq_cnt, 4)) {
\end{itemize}
\end{frame}
-% ----- Slide "OSADL" --------------------------
\begin{frame}
\frametitle{OSADL}
\pause
@@ -278,7 +259,7 @@ while (read(fd, &irq_cnt, 4)) {
\end{itemize}
\end{frame}
-% ----- Slide "Future" --------------------------
+\subsubsection{Future Development}
\begin{frame}
\frametitle{Future}
\pause
@@ -289,13 +270,4 @@ while (read(fd, &irq_cnt, 4)) {
\end{itemize}
\end{frame}
-% ----- Slide "Thanks for listening!" ----------
-\begin{frame}
-\frametitle{Thanks for listening!}
-\pause
-\begin{itemize}
-\item Questions ?
-\end{itemize}
-\end{frame}
-
-\end{document}
+\input{tailpres}