[bootlin/training-materials updates] master: kernel: sleeping: Add a slide about the readx_poll_timeout helpers (954253ff)
Miquel Raynal
miquel.raynal at bootlin.com
Tue Jun 22 20:46:58 CEST 2021
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/954253ffff0f1ffc5d24bd6bd5ec0a14d84317ed
>---------------------------------------------------------------
commit 954253ffff0f1ffc5d24bd6bd5ec0a14d84317ed
Author: Miquel Raynal <miquel.raynal at bootlin.com>
Date: Tue Jun 22 20:44:45 2021 +0200
kernel: sleeping: Add a slide about the readx_poll_timeout helpers
These are quite common in the drivers, especially for short wait
periods against hardware changes.
Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
>---------------------------------------------------------------
954253ffff0f1ffc5d24bd6bd5ec0a14d84317ed
.../kernel-driver-development-sleeping.tex | 27 ++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex b/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
index a97831f8..6eb26088 100644
--- a/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
+++ b/slides/kernel-driver-development-sleeping/kernel-driver-development-sleeping.tex
@@ -237,3 +237,30 @@ From \kfile{char/tpm/tpm_ibmvtpm.c}
\end{itemize}
\end{itemize}
\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Waiting when hardware is involved}
+ \begin{itemize}
+ \item When hardware is involved in the waiting process
+ \begin{itemize}
+ \item but no there is no interrupt available
+ \item or because a context switch would be too expensive
+ \end{itemize}
+ \item Specific polling I/O accessors may be used:
+ \begin{itemize}
+ \item Exhaustive list in \kfile{include/iopoll.h}
+ \begin{minted}{c}
+int read[bwlq]_poll_timeout[_atomic](addr, val, cond,
+ delay_us, timeout_us)
+ \end{minted}
+ \begin{itemize}
+ \item \code{addr}: I/O memory location
+ \item \code{val}: Content of the register pointed with
+ \item \code{cond}: Boolean condition based on \code{val}
+ \item \code{delay_us}: Polling delay between reads
+ \item \code{timeout_s}: Timeout delay after which the operation
+ fails and returns -ETIMEDOUT
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+\end{frame}
More information about the training-materials-updates
mailing list