summaryrefslogtreecommitdiff
path: root/kernel-devel/char-device/pres_char-device_de.tex
diff options
context:
space:
mode:
Diffstat (limited to 'kernel-devel/char-device/pres_char-device_de.tex')
-rw-r--r--kernel-devel/char-device/pres_char-device_de.tex287
1 files changed, 0 insertions, 287 deletions
diff --git a/kernel-devel/char-device/pres_char-device_de.tex b/kernel-devel/char-device/pres_char-device_de.tex
deleted file mode 100644
index 6568af4..0000000
--- a/kernel-devel/char-device/pres_char-device_de.tex
+++ /dev/null
@@ -1,287 +0,0 @@
-\input{configpres}
-
-\title{Interaktion eines Character Device Treibers}
-\maketitle
-
-\subsection{Character Devices}
-
-\subsubsection{Syscall Interface}
-\begin{frame}
-\frametitle{Syscall Interface}
-\begin{center}
-\includegraphics[width=5cm]{images/syscall.png}
-\end{center}
-\end{frame}
-
-\subsubsection{Struktur}
-\begin{frame}
-\frametitle{Interaktion eines Character Device Treibers}
-\pause
-\begin{itemize}
-\item open
-\pause
-\item release
-\pause
-\item read
-\pause
-\item write
-\pause
-\item fsync
-\pause
-\item llseek
-\pause
-\item poll
-\pause
-\item mmap
-\pause
-\item ioctl
-\pause
-\item \dots
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{open}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-int (*open) (struct inode *, struct file *);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [open:] Erste Operation auf einem Character-Device. Die Funktion muss
-nicht implementiert werden. In diesem Fall schlägt ein Öffnen des Devices nie
-fehl und es gibt keine Benachrichtigung des Treibers.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/open.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{release}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-int (*release) (struct inode *, struct file *);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [release:] Letzte Operation auf einem Character-Device. Die Funktion muss
-nicht implementiert werden. In diesem Fall schlägt ein Öffnen des Devices nie
-fehl und es gibt keine Benachrichtigung des Treibers.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/release.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{read}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [read:] Lesen von Daten des Devices. Die Daten werden mit Hilfe von
-\emph{copy\_to\_user} in den Userspace kopiert.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/read.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{write}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [write:] Schreiben von Daten an das Devices. Die Daten werden mit Hilfe
-von \emph{copy\_from\_user} aus dem Userspace kopiert.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/write.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{fsync}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-int (*fsync) (struct file *, struct dentry *, int datasync);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [fsync:] Das Schreiben aller gecachten Daten eines Devices erzwingen.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/fsync.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{llseek}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-loff_t (*llseek) (struct file *, loff_t, int);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [llseek:] Setzt die aktuelle Position für Lese- und Schreibzugriffe.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/llseek.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{poll}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-unsigned int (*poll) (struct file *, struct poll_table_struct *);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [poll:] Implementiert poll, epoll und select. Wird poll nicht
-implementiert, so muss nicht blockierendes Lesen und Schreiben möglich sein.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/poll.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{mmap}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-int (*mmap) (struct file *, struct vm_area_struct *);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [mmap:] Legt ein Speichermapping des Devices im Kontext des
-Userspace-Prozesses an.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/mmap.png}
-\end{center}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{ioctl}
-\pause
-\begin{itemize}
-\item Prototyp
-\pause
-\begin{tiny}
-\begin{lstlisting}[frame=trBL]
-int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
-\end{lstlisting}
-\end{tiny}
-\pause
-\item Beschreibung
-\pause
-\begin{description}
-\item [ioctl:] Implementiert Device-spezifische Kommandos. Sollte, da in den
-meisten Fällen bessere, standartisierte Schnittstellen existieren, vermieden
-werden.
-\end{description}
-\pause
-\item Datenfluss
-\end{itemize}
-\pause
-\begin{center}
-\includegraphics[width=5cm]{images/ioctl.png}
-\end{center}
-\end{frame}
-
-\input{tailpres}