[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