[FE training-materials-updates] Misc improvements to interrupt management slides
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Mon Sep 30 10:59:20 CEST 2013
Repository : git://git.free-electrons.com/training-materials.git
On branch : kernel-ng
Link : http://git.free-electrons.com/training-materials/commit/?id=105c7ceab5a82123289b2ad0491880bea2210b93
>---------------------------------------------------------------
commit 105c7ceab5a82123289b2ad0491880bea2210b93
Author: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
Date: Mon Sep 30 10:58:48 2013 +0200
Misc improvements to interrupt management slides
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
>---------------------------------------------------------------
105c7ceab5a82123289b2ad0491880bea2210b93
.../kernel-driver-development-interrupts.tex | 56 +++++++++++++-------
1 file changed, 36 insertions(+), 20 deletions(-)
diff --git a/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex b/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex
index 02af926..f5d8c8a 100644
--- a/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex
+++ b/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex
@@ -3,30 +3,38 @@
\begin{frame}[fragile]
\frametitle{Registering an interrupt handler 1/2}
\begin{itemize}
- \item Defined in \code{include/linux/interrupt.h}
- \begin{itemize}
- \item \mint{c}+int request_irq(unsigned int irq,+
- \mint{c}+irq_handler_t handler, unsigned long irq_flags,+
- \mint{c}+const char *devname, void *dev_id);+
- \begin{itemize}
- \item \code{irq} is the requested IRQ channel
- \item \code{handler} is a pointer to the IRQ handler
- \item \code{irq_flags} are option masks (see next slide)
- \item \code{devname} is the registered name
- \item \code{dev_id} is a pointer to some data. It cannot be NULL
- as it is used as an identifier for \code{free_irq} when using
- shared IRQs.
- \end{itemize}
- \item \mint{c}+void free_irq(unsigned int irq, void *dev_id);+
- \end{itemize}
- \end{itemize}
+ \item \begin{minted}{c}
+int request_irq(unsigned int irq,
+ irq_handler_t handler, unsigned long irq_flags,
+ const char *devname, void *dev_id);
+ \end{minted}
+ \begin{itemize}
+ \item Register an interrupt handler.
+ \item \code{irq} is the requested IRQ channel. For platform
+ devices, use \code{platform_get_irq()} to retrieve the
+ interrupt number.
+ \item \code{handler} is a pointer to the IRQ handler
+ \item \code{irq_flags} are option masks (see next slide)
+ \item \code{devname} is the registered name
+ \item \code{dev_id} is a pointer to some data. It cannot be NULL
+ as it is used as an identifier for \code{free_irq} when using
+ shared IRQs.
+ \end{itemize}
+ \item \begin{minted}{c}
+void free_irq(unsigned int irq, void *dev_id);
+\end{minted}
+\begin{itemize}
+\item Release an interrupt handler.
+\end{itemize}
+ \item Defined in \code{include/linux/interrupt.h}
+ \end{itemize}
\end{frame}
\begin{frame}
\frametitle{Registering an interrupt handler 2/2}
\begin{itemize}
- \item Main \code{irq_flags} bit values (can be combined, none is
- fine too)
+ \item Main \code{irq_flags} bit values (can be combined, \code{0}
+ when no flags are needed)
\begin{itemize}
\item \code{IRQF_SHARED}
\begin{itemize}
@@ -59,7 +67,9 @@
\end{frame}
\begin{frame}[fragile]
- \frametitle{/proc/interrupts on a Panda board}
+ \frametitle{{\tt /proc/interrupts} on a Panda board}
+\begin{block}{}
+ \footnotesize
\begin{verbatim}
CPU0 CPU1
39: 4 0 GIC TWL6030-PIH
@@ -77,6 +87,12 @@ IPI4: 0 0 CPU stop interrupts
LOC: 196407 136995 Local timer interrupts
Err: 0
\end{verbatim}
+\end{block}
+ \footnotesize
+ Note: interrupt numbers shown on the left-most column are virtual
+ numbers when the Device Tree is used. The real physical interrupt
+ numbers are either shown as an additional column, or can be seen in
+ \code{/sys/kernel/debug/irq_domain_mapping}.
\end{frame}
\begin{frame}[fragile]
More information about the training-materials-updates
mailing list