diff options
Diffstat (limited to 'kernel-devel/uio-driver')
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 Binary files differdeleted file mode 100644 index f7ab989..0000000 --- a/kernel-devel/uio-driver/images/greg-all-hardware.jpg +++ /dev/null diff --git a/kernel-devel/uio-driver/images/greg-kernel-org.jpg b/kernel-devel/uio-driver/images/greg-kernel-org.jpg Binary files differdeleted file mode 100644 index dbfb915..0000000 --- a/kernel-devel/uio-driver/images/greg-kernel-org.jpg +++ /dev/null diff --git a/kernel-devel/uio-driver/images/hjk-desperate.jpg b/kernel-devel/uio-driver/images/hjk-desperate.jpg Binary files differdeleted file mode 100644 index 740f574..0000000 --- a/kernel-devel/uio-driver/images/hjk-desperate.jpg +++ /dev/null diff --git a/kernel-devel/uio-driver/images/ioctl-vs-uio_de.png b/kernel-devel/uio-driver/images/ioctl-vs-uio_de.png Binary files differdeleted file mode 100644 index 0989d07..0000000 --- a/kernel-devel/uio-driver/images/ioctl-vs-uio_de.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 8536934..0000000 --- a/kernel-devel/uio-driver/images/ioctl-vs-uio_en.png +++ /dev/null diff --git a/kernel-devel/uio-driver/images/konventioneller-treiber_de.png b/kernel-devel/uio-driver/images/konventioneller-treiber_de.png Binary files differdeleted file mode 100644 index cbca8bc..0000000 --- a/kernel-devel/uio-driver/images/konventioneller-treiber_de.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index bea54da..0000000 --- a/kernel-devel/uio-driver/images/konventioneller-treiber_en.png +++ /dev/null diff --git a/kernel-devel/uio-driver/images/uio-treiber_de.png b/kernel-devel/uio-driver/images/uio-treiber_de.png Binary files differdeleted file mode 100644 index 9e18a06..0000000 --- a/kernel-devel/uio-driver/images/uio-treiber_de.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index caa2152..0000000 --- a/kernel-devel/uio-driver/images/uio-treiber_en.png +++ /dev/null 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} |
