diff options
Diffstat (limited to 'kernel-devel/char-device/pres_char-device_de.tex')
| -rw-r--r-- | kernel-devel/char-device/pres_char-device_de.tex | 287 |
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} |
