[FE training-materials-updates] kernel-source-code-drivers: simply part about no stable kernel API
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Wed Jul 16 17:02:15 CEST 2014
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=6a4cb0f5c41987b8e665d24d51fe9201d7426481
>---------------------------------------------------------------
commit 6a4cb0f5c41987b8e665d24d51fe9201d7426481
Author: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
Date: Wed Jul 16 16:16:51 2014 +0200
kernel-source-code-drivers: simply part about no stable kernel API
Three slides to explain this is a bit too much, and the USB example
dating from 2006 is kind of dated. Reword things a bit, and summarize.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
>---------------------------------------------------------------
6a4cb0f5c41987b8e665d24d51fe9201d7426481
.../kernel-source-code-drivers.tex | 51 ++++----------------
1 file changed, 10 insertions(+), 41 deletions(-)
diff --git a/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex b/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
index 4fae6cf..549843f 100644
--- a/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
+++ b/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
@@ -79,50 +79,19 @@
\end{frame}
\begin{frame}
- \frametitle{No stable Linux internal API 1/3}
+ \frametitle{No stable Linux internal API}
\begin{itemize}
\item The internal kernel API to implement kernel code can undergo
- changes between two stable 2.6.x or 3.x releases. A stand-alone
- driver compiled for a given version may no longer compile or work
- on a more recent one. See
- \kerneldoc{stable_api_nonsense.txt} in kernel sources for
+ changes between two releases.
+ \item In-tree drivers are updated by the developer proposing the API
+ change: works great for mainline code.
+ \item An out-of-tree driver compiled for a given version may no
+ longer compile or work on a more recent one.
+ \item See \kerneldoc{stable_api_nonsense.txt} in kernel sources for
reasons why.
- \item Of course, the external API must not change (system calls,
- \code{/proc}, \code{/sys}), as it could break existing
- programs. New features can be added, but kernel developers try to
- keep backward compatibility with earlier versions, at least for 1
- or several years.
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \frametitle{No stable Linux internal API 2/3}
- \begin{itemize}
- \item Whenever a developer changes an internal API, (s)he also has
- to update all kernel code which uses it. Nothing broken!
- \item Works great for code in the mainline kernel tree.
- \item Difficult to keep in line for out of tree or closed-source
- drivers!
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \frametitle{No stable Linux internal API 3/3}
- \begin{itemize}
- \item USB example
- \begin{itemize}
- \item Linux has updated its USB internal API at least 3 times
- (fixes, security issues, support for high-speed devices) and has
- now the fastest USB bus speeds (compared to other systems)
- \item Windows XP also had to rewrite its USB stack 3 times. But,
- because of closed-source, binary drivers that can't be updated,
- they had to keep backward compatibility with all earlier
- implementation. This is very costly (development, security,
- stability, performance).
- \end{itemize}
- \item See âMyths, Lies, and Truths about the Linux Kernelâ, by Greg
- K.H., for details about the kernel development process:
- \url{http://kroah.com/log/linux/ols_2006_keynote.html}
+ \item Of course, the kernel to userspace API does not change (system
+ calls, \code{/proc}, \code{/sys}), as it would break existing
+ programs.
\end{itemize}
\end{frame}
More information about the training-materials-updates
mailing list