[bootlin/training-materials updates] master: Update stats about number of lines in kernel source code (dc3f15dd)
Michael Opdenacker
michael.opdenacker at bootlin.com
Tue May 19 14:52:17 CEST 2020
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/dc3f15dd67969e5655a84f2b4d97baa0091a4113
>---------------------------------------------------------------
commit dc3f15dd67969e5655a84f2b4d97baa0091a4113
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date: Tue May 19 14:52:17 2020 +0200
Update stats about number of lines in kernel source code
- This also removes an obsolete reference to the "firmware"
directory that no longer exists in recent versions
Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>
>---------------------------------------------------------------
dc3f15dd67969e5655a84f2b4d97baa0091a4113
.../sysdev-linux-intro-sources.tex | 39 ++++++++++---------
utils/source-code-line-statistics | 45 ++++++++++++++++++++++
2 files changed, 66 insertions(+), 18 deletions(-)
diff --git a/slides/sysdev-linux-intro-sources/sysdev-linux-intro-sources.tex b/slides/sysdev-linux-intro-sources/sysdev-linux-intro-sources.tex
index dd7d4505..7336e499 100644
--- a/slides/sysdev-linux-intro-sources/sysdev-linux-intro-sources.tex
+++ b/slides/sysdev-linux-intro-sources/sysdev-linux-intro-sources.tex
@@ -92,30 +92,33 @@
\begin{frame}
\frametitle{Linux kernel size (2)}
- As of kernel version 4.6 (in percentage of number of lines).
+ As of kernel version 5.7 (in percentage of total number of lines).
+ % Update the data by running utils/source-code-line-statistics
+ % in the Linux kernel source directory
\begin{columns}
\column[t]{0.5\textwidth}
\begin{itemize}
- \item \kdir{drivers}: 57.0\%
- \item \kdir{arch}: 16.3\%
- \item \kdir{fs}: 5.5\%
- \item \kdir{sound}: 4.4\%
- \item \kdir{net}: 4.3\%
- \item \kdir{include}: 3.5\%
- \item \kdir{Documentation}: 2.8\%
- \item \kdir{tools}: 1.3\%
- \item \kdir{kernel}: 1.2\%
+ \item \kdir{drivers}: 60.1\%
+ \item \kdir{arch}: 12.9\%
+ \item \kdir{fs}: 4.7\%
+ \item \kdir{sound}: 4.2\%
+ \item \kdir{net}: 4.0\%
+ \item \kdir{include}: 3.6\%
+ \item \kdir{tools}: 3.2\%
+ \item \kdir{Documentation}: 3.2\%
+ \item \kdir{kernel}: 1.3\%
\end{itemize}
\column[t]{0.5\textwidth}
\begin{itemize}
- \item \kdir{firmware}: 0.6\%
- \item \kdir{lib}: 0.5\%
- \item \kdir{mm}: 0.5\%
- \item \kdir{scripts}: 0.4\%
- \item \kdir{crypto}: 0.4\%
- \item \kdir{security}: 0.3\%
- \item \kdir{block}: 0.1\%
- \item ...
+ \item \kdir{lib}: 0.6\%
+ \item \kdir{mm}: 0.5\%
+ \item \kdir{scripts}: 0.4\%
+ \item \kdir{crypto}: 0.4\%
+ \item \kdir{security}: 0.3\%
+ \item \kdir{block}: 0.2\%
+ \item \kdir{samples}: 0.1\%
+ \item \kdir{virt}: 0.1\%
+ \item ...
\end{itemize}
\end{columns}
\end{frame}
diff --git a/utils/source-code-line-statistics b/utils/source-code-line-statistics
new file mode 100755
index 00000000..e324c7e0
--- /dev/null
+++ b/utils/source-code-line-statistics
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+
+# Usage:
+# 1/ Go to a source directory (such as kernel sources
+# 2/ Run: source-code-line-statistics
+
+# Author: michael.opdenacker at bootlin.com
+# License: Public Domain
+
+
+import os
+
+excludes = ['.git']
+
+def count_lines_in_file(filename):
+ return (sum(1 for line in open(filename, 'rb')))
+
+def count_lines_in_dir(dirname):
+ sum=0
+ for root, dirs, files in os.walk(o):
+ for f in files:
+ size = count_lines_in_file(os.path.join(root, f))
+ sum += size
+ return sum
+
+total = 0
+
+sizes = []
+
+for o in os.listdir('.'):
+ if os.path.isdir(o) and not (o in excludes):
+ s = count_lines_in_dir(o)
+ sizes.append([o, s])
+ total += s
+
+print('size summary in number of lines of source code:')
+
+for i in sorted(sizes, key=lambda s: s[1], reverse=True):
+ print(i[0] + ': ' + "{:.1%}".format(i[1]/total))
+
+print('\nSummary in number of lines of source code (Bootlin kernel slides format):')
+
+for i in sorted(sizes, key=lambda s: s[1], reverse=True):
+ print('\item \kdir{' + i[0] + '}: ' + "{:03.1f}".format(100*i[1]/total) + '\%')
+
More information about the training-materials-updates
mailing list