diff options
| author | Jan Altenberg <jan@linutronix.de> | 2011-01-21 14:09:31 +0100 |
|---|---|---|
| committer | Jan Altenberg <jan@linutronix.de> | 2011-01-21 14:09:31 +0100 |
| commit | c929ad9f5ab01ea32ddd1a48aae44a233cb6c039 (patch) | |
| tree | b1c235be231606ec869d76b94fa17e56c95340e9 /linux-basics/udev-basics | |
| parent | 4eaadbd816e2f5f0717d789188e6086612262e73 (diff) | |
Introduced the first draft of some new topics.
_BASIC_ introduction to:
* Open Source licenses
* Scheduling / Process Management
* UDEV
Diffstat (limited to 'linux-basics/udev-basics')
| -rw-r--r-- | linux-basics/udev-basics/Makefile | 9 | ||||
| -rw-r--r-- | linux-basics/udev-basics/pres_udev_en.tex | 178 |
2 files changed, 187 insertions, 0 deletions
diff --git a/linux-basics/udev-basics/Makefile b/linux-basics/udev-basics/Makefile new file mode 100644 index 0000000..4663d52 --- /dev/null +++ b/linux-basics/udev-basics/Makefile @@ -0,0 +1,9 @@ +all: + for pdf in `ls -1 *.tex` ; do \ + pdflatex $$pdf; \ + pdflatex $$pdf; \ + done + +clean: + rm -f *.aux *.log *.pdf *.log *.snm *.toc *.vrb *.nav *.out + diff --git a/linux-basics/udev-basics/pres_udev_en.tex b/linux-basics/udev-basics/pres_udev_en.tex new file mode 100644 index 0000000..5d8eacc --- /dev/null +++ b/linux-basics/udev-basics/pres_udev_en.tex @@ -0,0 +1,178 @@ +\documentclass[11pt]{beamer} + +%\usepackage{ngerman} +\usepackage{times} +\usepackage{graphicx} +\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps} +\usepackage{amsmath,amssymb} +\usepackage[latin1]{inputenc} +\usepackage{listings,color} +\definecolor{lbcolor}{RGB}{255,210,150} +\lstset{ + language=C, + numbers=left, + stepnumber=1, + numbersep=5pt, + numberstyle=\tiny, + breaklines=true, + breakautoindent=true, + postbreak=\space, + tabsize=2, + basicstyle=\ttfamily\footnotesize, + showspaces=false, + showstringspaces=false, + extendedchars=true, + backgroundcolor=\color{lbcolor}, + keywordstyle=\bf , + commentstyle=\color{green}, + stringstyle=\color{red} +} + +\mode<presentation> +{ + \usetheme{linutronix} +} + +% on the following slides, include icon in the left sidebar +\def\lximg{/usr/share/lx/icons/fueller.png} + +\title{The UDEV Daemon} +\institute{Linutronix GmbH} + +\begin{document} + +\frame{ \titlepage } + +% stop displaying 'fueller.png' on the following slides +\def\lximg{none} + +\begin{frame} +\frametitle{What is UDEV?} +\begin{itemize} +\item UDEV is responsible for dynamic device management +\item It receives so called uevents from the kernel via a netlink socket +\item Based on the rules defined in the UDEV configuration, specific tasks can +be performed (e.g. creating device nodes) +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{How to perform actions on ''missed'' uevents} +\begin{itemize} +\item Since udev is a userspace process, it is started when the system is already up +and running. To perform actions on the events, which have been generated +during the kernel boot-up, there's a trigger functionality +\item So, usually the first thing after starting udev is to trigger the missed events +\item This can be done by calling ''udevadm trigger'' +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Monitoring udev events} +\begin{verbatim} +jan@bender:~$ sudo udevadm monitor +monitor will print the received events for: +UDEV - the event which udev sends out + after rule processing +KERNEL - the kernel uevent +KERNEL[129.916] add [...]usb1/1-3/1-3.1 [...] +KERNEL[129.917] add [...]usb1/1-3/1-3.1 [...] +KERNEL[129.918] add [...]usb1/1-3/1-3.1 [...] +KERNEL[129.918] add [...]usb1/1-3/1-3.1 [...] +UDEV [129.922] add [...]usb1/1-3/1-3.1 [...] +UDEV [129.922] add [...]usb1/1-3/1-3.1 [...] +[...] +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{UDEV: important commands} +Starting the UDEV Daemon: +\begin{verbatim} +udevd --daemon +\end{verbatim} +Triggering UDEV events: +\begin{verbatim} +udevadm trigger +\end{verbatim} +Monitoring UDEV events: +\begin{verbatim} +udevadm monitor +\end{verbatim} +\end{frame} + +\begin{frame} +\frametitle{Writing UDEV rules} +\begin{itemize} +\item Rules are usually kept in /etc/udev/rules.d +\item Rules are constructed using series of KEY-VALUE pairs +\item The pairs are separated by commas +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{Basic keywords} +\begin{itemize} +\item KERNEL\\ +The kernel name of a device +\item SUBSYSTEM\\ +The name of the subsystem which caused the event +\item DRIVER\\ +Name of the driver which caused the event +\item NAME\\ +Name of the device node +\item SYMLINK\\ +Name of a symlink pointing to the node +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Simple example for device node creation} +\begin{verbatim} +# Some basic rule +KERNEL=="ttyS0", NAME="my_serial_port" + +# A more complex rule using SysFS attributes +# and regular expressions +SUBSYSTEM=="net", ACTION=="add", \ +DRIVERS=="?*", \ +ATTR{address}=="00:19:d1:12:0d:d2", \ +KERNEL=="eth*", NAME="eth0" +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Operators} +\begin{verbatim} +Comparisons: +== equal +!= not equal + +Assignments: += Assign a value ++= Add a value +:= Finally assign a value + (disallow any later changes) +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Substitutions} +\begin{verbatim} +%k kernel name +%n number for this device +%d driver name +%M major number of this device +%m minor number of this device +[...] +\end{verbatim} +\end{frame} + +\section*{sources} +\begin{frame} +\begin{thebibliography}{1} +\bibitem{udev} http://reactivated.net/writing\_udev\_rules.html +\bibitem{manudev} man udev +\end{thebibliography} +\end{frame} +\end{document} |
