summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@ford.mecka.net>2020-07-18 09:51:23 +0200
committerManuel Traut <manut@ford.mecka.net>2020-07-18 16:25:01 +0200
commitb869345671bd7464432fb789ae9f77d667d5135a (patch)
tree7c599abe9306e19ad60f3a70d63de4d599649256
parent900c12d856bffc4769384f2fea0d33183a84917e (diff)
added pruefung 2020 in minor changesvorlesung
-rw-r--r--2020-pruefung.tex430
-rw-r--r--Makefile44
-rw-r--r--confighandout.tex3
-rw-r--r--configmasterhandout.tex5
-rw-r--r--configmasterpres.tex11
-rw-r--r--images/kernelversions.pngbin24780 -> 16610 bytes
-rw-r--r--kernel-devel/kernel-basics/pres_kernel-basics_de.tex88
-rw-r--r--linux-basics/what-is-linux/handout_what-is-linux_de.tex22
-rw-r--r--linux-basics/what-is-linux/pres_what-is-linux_de.tex6
-rw-r--r--pres_master.tex2
-rw-r--r--tailhandout.tex1
-rw-r--r--vorl.tex8
-rw-r--r--vorl3.tex3
-rw-r--r--vorl5.tex2
14 files changed, 538 insertions, 87 deletions
diff --git a/2020-pruefung.tex b/2020-pruefung.tex
new file mode 100644
index 0000000..add53c4
--- /dev/null
+++ b/2020-pruefung.tex
@@ -0,0 +1,430 @@
+\documentclass[addpoints,12pt]{exam}
+
+\usepackage{ngerman}
+\usepackage{listings,color}
+\usepackage{graphicx}
+\usepackage[T1]{fontenc}
+
+\firstpageheadrule
+\runningheadrule
+\lhead{Manuel Traut\\Sommersemester 2020}
+\chead{Hochschule Ravensburg-Weingarten\\Linux-Kernelprogrammierung}
+\rhead{MatrNr:\\Datum:}
+
+\firstpagefootrule
+\runningfootrule
+\firstpagefooter{Page \thepage\ of \numpages}
+{}
+{Punkte: \makebox[.5in]{\hrulefill}\\
+von \pointsonpage{\thepage} Punkten}
+
+\runningfooter{Page \thepage\ of \numpages}
+{}
+{}
+
+\pagestyle{headandfoot}
+
+\pointsinrightmargin
+\pointpoints{Punkt}{Punkte}
+
+\begin{document}
+
+
+\begin{coverpages}
+\begin{titlepage}
+\title{Pr\"ufung Linux-Kernelprogrammierung}
+\author{Dozent: Manuel Traut}
+\date{20. Juli 2020 16:00 Uhr}
+\maketitle
+\begin{center}
+Hochschule Ravensburg-Weingarten
+\vspace{1cm}
+
+Raum: H062 Sektor 1
+
+Dauer: 60 Minuten, erlaubte Hilfsmittel: alle
+\end{center}
+
+
+\vspace{2cm}
+Name:\enspace\hrulefill
+\vspace{2cm}
+MatrNr:\enspace\hrulefill
+\begin{center}
+\begin{lstlisting}
+ a8888b.
+ d888888b.
+ 8P"YP"Y88 (((((((())))))))))
+ 8|o||o|88 ||VIEL ERFOLG !!||
+ 8' .88 ((((((((((((()))))
+ 8`._.' Y8.
+ d/ `8b.
+ .dP . Y8b.
+ d8:' " `::88b.
+ d8" `Y88b
+ :8P ' :888
+ 8a. : _a88P
+ ._/"Yaa_ : .| 88P|
+ \ YP" `| 8P `.
+ / \._____.d| .'
+ `--..__)888888P`._.'
+\end{lstlisting}
+\end{center}
+\end{titlepage}
+\end{coverpages}
+
+\lstset{ %
+ basicstyle=\scriptsize, % the size of the fonts that are used for the code
+ breaklines=true, % sets automatic line breaking
+ frame=single, % adds a frame around the code
+ language=C, % the language of the code
+ numbers=left, % where to put the line-numbers;
+ numbersep=5pt, % how far the line-numbers are from the code
+ numberstyle=\tiny, % the style that is used for the line-numbers
+ tabsize=8, % sets default tabsize to 2 spaces
+}
+
+\begin{questions}
+
+\question[3] Was ist eine Linuxdistribution, was der Linuxkernel? Wie stehen
+Sie in Relation?
+
+\question[3] Was versteht man unter dem Begriff 'Kernelpatch'? Wie wird ein
+ Patch erstellt und angewendet?
+
+\question[4] Erkl\"aren Sie an einem Beispiel die Aufgaben eines Linux Kernel
+ Maintainers.
+
+\question [6] Beschreiben Sie stichwortartig den Releasezyklus des Linuxkernels
+Erkl\"aren Sie in diesem Zusammenhang auch die Begriffe 'Release Candidate',
+'Release', 'stable Kernel' und 'staging'.
+
+\question
+\begin{parts}
+\part[1] Welches Tool ist auf folgendem Bild zu sehen?
+\part[1] \"Uber welche Datei wird der Inhalt / Struktur des Tools gesteuert?
+\part[2] Warum ist es notwendig, dass der Kernel konfigurierbar ist?
+\part[4] Welche Einstellungen k\"onnen mit Hilfe dieses Tools konfiguriert
+ werden? (beschreiben Sie 4 Kategorien)
+\end{parts}
+
+\includegraphics[height=0.3\textwidth]{./images/kconfig.png}
+
+
+\question
+Linux beinhaltet das Tracingsystem 'ftrace'.
+\begin{parts}
+\part[4] Beschreiben/Skizzieren Sie die Architektur und die wichtigsten
+Funktionen des Systems.
+\part[4] Beschreiben Sie am Beispiel sched::sched\_switch Event wie Sie
+das Tracing konfigurieren, starten, auslesen.
+\end{parts}
+
+\question[4] Nennen Sie 4 Gr\"unde die f\"ur oder gegen die Integration eines
+von Ihnen entwickelten Treibers in Mainline Linux sprechen.
+
+\question[4] Kernel- und Userspace arbeiten in unterschiedlichen
+ Addressr\"aumen. Nennen Sie eine M\"oglichkeit, wie Daten zwischen den
+ Bereichen ausgetauscht werden k\"onnen. Nennen Sie typische
+ Verwendung, gegebenenfalls Einschr\"ankungen.
+
+\newpage
+
+\question
+Die folgenden Frage bezieht sich auf den Quellcode 1 im Anhang.
+\begin{parts}
+\part[10] Mit den Funktionen 'set\_latch\_green und get\_latch\_green' (welche
+in asm/mach-rc32434/gpio.h definiert sind) kann analog zu den bereits verwendeten
+Funktionen 'set\_latch\_u5 / get\_latch\_u5' eine gr\"une LED angesteuert
+werden. Erweitern Sie den Treiber so, dass die gr\"une LED z.B. mit
+ 'echo 1 > /sys/class/leds/huhu/brightness'
+eingeschaltet werden kann.
+\end{parts}
+
+\question
+Die folgenden Fragen beziehen sich auf den Quellcode 2 im Anhang.
+\begin{parts}
+\part[4] Der Treiber wird in einem System geladen, welches 2 PCI Devices mit
+ Vendor ID 0x186c und Device ID 0x0624 besitzt. Wie oft wird mf624\_pci\_probe
+ und mf624\_init aufgerufen?
+\part[8] Egal auf welches Device Sie zugreifen, Sie interagieren immer nur mit
+ einer der zwei PCI Karten. Wie m\"usssen Sie den Treiber modifizieren, damit
+ beide Karten funktionieren?
+\end{parts}
+
+\end{questions}
+
+\vspace{1cm}
+Punkte: \_\_\_\_ von \numpoints
+\hspace{1cm}
+Note:
+
+\newpage
+
+\begin{appendix}
+
+Quellcode 1:
+
+\begin{lstlisting}
+/*
+ * LEDs driver for the "User LED" on Routerboard532
+ *
+ * Copyright (C) 2009 Phil Sutter <n0-1@freewrt.org>
+ *
+ * Based on leds-cobalt-qube.c by Florian Fainelly and
+ * rb-diag.c (my own standalone driver for both LED and
+ * button of Routerboard532).
+ */
+
+#include <linux/leds.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <asm/mach-rc32434/gpio.h>
+#include <asm/mach-rc32434/rb.h>
+
+static void rb532_led_set(struct led_classdev *cdev,
+ enum led_brightness brightness)
+{
+ if (brightness)
+ set_latch_u5(LO_ULED, 0);
+ else
+ set_latch_u5(0, LO_ULED);
+}
+
+static enum led_brightness rb532_led_get(struct led_classdev *cdev)
+{
+ return (get_latch_u5() & LO_ULED) ? LED_FULL : LED_OFF;
+}
+
+static struct led_classdev rb532_uled = {
+ .name = "uled",
+ .brightness_set = rb532_led_set,
+ .brightness_get = rb532_led_get,
+ .default_trigger = "nand-disk",
+};
+
+static int rb532_led_probe(struct platform_device *pdev)
+{
+ return led_classdev_register(&pdev->dev, &rb532_uled);
+}
+
+static int rb532_led_remove(struct platform_device *pdev)
+{
+ led_classdev_unregister(&rb532_uled);
+ return 0;
+}
+
+static struct platform_driver rb532_led_driver = {
+ .probe = rb532_led_probe,
+ .remove = rb532_led_remove,
+ .driver = {
+ .name = "rb532-led",
+ },
+};
+
+module_platform_driver(rb532_led_driver);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("User LED support for Routerboard532");
+MODULE_AUTHOR("Phil Sutter <n0-1@freewrt.org>");
+MODULE_ALIAS("platform:rb532-led");
+\end{lstlisting}
+
+\newpage
+
+Quellcode 2:
+
+\begin{lstlisting}
+/*
+ * UIO driver fo Humusoft MF624 DAQ card.
+ * Copyright (C) 2011 Rostislav Lisovy <lisovy@gmail.com>,
+ * Czech Technical University in Prague
+ *
+ * Copyright (C) 2016 Manuel Traut <manut@mecka.net>,
+ * modified for usage in kernel exams
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/device.h>
+#include <linux/pci.h>
+#include <linux/slab.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/uio_driver.h>
+
+#define PCI_VENDOR_ID_HUMUSOFT 0x186c
+#define PCI_DEVICE_ID_MF624 0x0624
+/* BAR0 Interrupt control/status register */
+#define INTCSR 0x4C
+#define INTCSR_ADINT_ENABLE (1 << 0)
+#define INTCSR_CTR4INT_ENABLE (1 << 3)
+#define INTCSR_PCIINT_ENABLE (1 << 6)
+#define INTCSR_ADINT_STATUS (1 << 2)
+#define INTCSR_CTR4INT_STATUS (1 << 5)
+
+enum mf624_interrupt_source {ADC, CTR4, ALL};
+
+static void mf624_disable_interrupt(enum mf624_interrupt_source source,
+ struct uio_info *info)
+{
+ void __iomem *INTCSR_reg = info->mem[0].internal_addr + INTCSR;
+
+ switch (source) {
+ case ADC:
+ iowrite32(ioread32(INTCSR_reg)
+ & ~(INTCSR_ADINT_ENABLE | INTCSR_PCIINT_ENABLE),
+ INTCSR_reg);
+ break;
+ case CTR4:
+ default:
+ iowrite32(ioread32(INTCSR_reg)
+ & ~(INTCSR_CTR4INT_ENABLE | INTCSR_PCIINT_ENABLE),
+ INTCSR_reg);
+ break;
+ }
+}
+
+static irqreturn_t mf624_irq_handler(int irq, struct uio_info *info)
+{
+ void __iomem *INTCSR_reg = info->mem[0].internal_addr + INTCSR;
+
+ if ((ioread32(INTCSR_reg) & INTCSR_ADINT_ENABLE)
+ && (ioread32(INTCSR_reg) & INTCSR_ADINT_STATUS)) {
+ mf624_disable_interrupt(ADC, info);
+ return IRQ_HANDLED;
+ }
+
+ if ((ioread32(INTCSR_reg) & INTCSR_CTR4INT_ENABLE)
+ && (ioread32(INTCSR_reg) & INTCSR_CTR4INT_STATUS)) {
+ mf624_disable_interrupt(CTR4, info);
+ return IRQ_HANDLED;
+ }
+ return IRQ_NONE;
+}
+
+static struct uio_info mf624_info = {
+ .name = "mf624";
+ .version = "0.0.1";
+};
+
+static int mf624_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
+{
+ struct uio_info *info = &mf624_info;
+
+ if (pci_enable_device(dev))
+ return -1;
+
+ if (pci_request_regions(dev, "mf624"))
+ goto out_disable;
+
+ /* BAR0 */
+ info->mem[0].name = "PCI chipset, interrupts, status "
+ "bits, special functions";
+ info->mem[0].addr = pci_resource_start(dev, 0);
+ if (!info->mem[0].addr)
+ goto out_release;
+ info->mem[0].size = pci_resource_len(dev, 0);
+ info->mem[0].memtype = UIO_MEM_PHYS;
+ info->mem[0].internal_addr = pci_ioremap_bar(dev, 0);
+ if (!info->mem[0].internal_addr)
+ goto out_release;
+
+ /* BAR2 */
+ info->mem[1].name = "ADC, DAC, DIO";
+ info->mem[1].addr = pci_resource_start(dev, 2);
+ if (!info->mem[1].addr)
+ goto out_unmap0;
+ info->mem[1].size = pci_resource_len(dev, 2);
+ info->mem[1].memtype = UIO_MEM_PHYS;
+ info->mem[1].internal_addr = pci_ioremap_bar(dev, 2);
+ if (!info->mem[1].internal_addr)
+ goto out_unmap0;
+
+ info->irq = dev->irq;
+ info->irq_flags = IRQF_SHARED;
+ info->handler = mf624_irq_handler;
+
+ if (uio_register_device(&dev->dev, info))
+ goto out_unmap1;
+
+ pci_set_drvdata(dev, info);
+ return 0;
+
+out_unmap1:
+ iounmap(info->mem[1].internal_addr);
+out_unmap0:
+ iounmap(info->mem[0].internal_addr);
+
+out_release:
+ pci_release_regions(dev);
+
+out_disable:
+ pci_disable_device(dev);
+
+ return -ENODEV;
+}
+
+static void mf624_pci_remove(struct pci_dev *dev)
+{
+ struct uio_info *info = pci_get_drvdata(dev);
+
+ mf624_disable_interrupt(ALL, info);
+
+ uio_unregister_device(info);
+ pci_release_regions(dev);
+ pci_disable_device(dev);
+
+ iounmap(info->mem[0].internal_addr);
+ iounmap(info->mem[1].internal_addr);
+
+ kfree(info);
+}
+
+static const struct pci_device_id mf624_pci_id[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_HUMUSOFT, PCI_DEVICE_ID_MF624) },
+ { 0, }
+};
+
+static struct pci_driver mf624_pci_driver = {
+ .name = "mf624",
+ .id_table = mf624_pci_id,
+ .probe = mf624_pci_probe,
+ .remove = mf624_pci_remove,
+};
+MODULE_DEVICE_TABLE(pci, mf624_pci_id);
+
+int mf624_init(void)
+{
+ return pci_driver_register(&mf624_pci_driver);
+}
+
+void mf624_exit(void)
+{
+ pci_driver_unregister(&mf624_pci_driver);
+}
+
+module_init(mf624_init);
+module_exit(mf624_exit);
+
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Rostislav Lisovy <lisovy@gmail.com>");
+\end{lstlisting}
+
+
+\end{appendix}
+\end{document}
diff --git a/Makefile b/Makefile
index fbad61a..062b6b9 100644
--- a/Makefile
+++ b/Makefile
@@ -111,35 +111,45 @@ build_master_pres: clean_master_pres
rm -f *.out
rm -f *.vrb
+git::
+ mv configpres.tex _configpres.tex
+ touch configpres.tex
+ mv tailpres.tex _tailpres.tex
+ touch tailpres.tex
+ pdflatex git.tex
+ rm configpres.tex tailpres.tex
+ mv _configpres.tex configpres.tex
+ mv _tailpres.tex tailpres.tex
+
vorlesung::
mv configpres.tex _configpres.tex
touch configpres.tex
mv tailpres.tex _tailpres.tex
touch tailpres.tex
- #pdflatex vorl1.tex
- #pdflatex vorl1.tex
+ pdflatex vorl1.tex
+ pdflatex vorl1.tex
pdflatex vorl2.tex
pdflatex vorl2.tex
- #pdflatex vorl3.tex
- #pdflatex vorl3.tex
- #pdflatex vorl4.tex
- #pdflatex vorl4.tex
- #pdflatex vorl5.tex
- #pdflatex vorl5.tex
- #pdflatex vorl.tex
- #pdflatex vorl.tex
+ pdflatex vorl3.tex
+ pdflatex vorl3.tex
+ pdflatex vorl4.tex
+ pdflatex vorl4.tex
+ pdflatex vorl5.tex
+ pdflatex vorl5.tex
+ pdflatex vorl.tex
+ pdflatex vorl.tex
rm configpres.tex tailpres.tex
mv _configpres.tex configpres.tex
mv _tailpres.tex tailpres.tex
- mv confighandout.tex _confighandout.tex
- touch confighandout.tex
- mv tailhandout.tex _tailhandout.tex
- touch tailhandout.tex
+ #mv confighandout.tex _confighandout.tex
+ #touch confighandout.tex
+ #mv tailhandout.tex _tailhandout.tex
+ #touch tailhandout.tex
#TEXINPUTS=`pwd`/wise:.:$(TEXINPUTS) pdflatex handout.tex
#TEXINPUTS=`pwd`/wise:.:$(TEXINPUTS) pdflatex handout.tex
- rm confighandout.tex tailhandout.tex
- mv _confighandout.tex confighandout.tex
- mv _tailhandout.tex tailhandout.tex
+ #rm confighandout.tex tailhandout.tex
+ #mv _confighandout.tex confighandout.tex
+ #mv _tailhandout.tex tailhandout.tex
pres::
diff --git a/confighandout.tex b/confighandout.tex
index bb5b65e..5a6eed8 100644
--- a/confighandout.tex
+++ b/confighandout.tex
@@ -1,3 +1,4 @@
+<<<<<<< Updated upstream
\documentclass{lxarticle}
\usepackage{german}
\usepackage{polyglossia}
@@ -11,3 +12,5 @@
\setcounter{secnumdepth}{-1}
\input{section}
+=======
+>>>>>>> Stashed changes
diff --git a/configmasterhandout.tex b/configmasterhandout.tex
index 285bc00..83cb00a 100644
--- a/configmasterhandout.tex
+++ b/configmasterhandout.tex
@@ -1,7 +1,8 @@
-\documentclass{book}
+\documentclass[unknownkeysallowed]{book}
\usepackage{german}
\usepackage[utf8]{inputenc}
-\usepackage{lxextras}
+%\usepackage{lxextras}
+\usepackage{listings,color}
\lstset{keywordstyle=\color{blue}}
\begin{document}
diff --git a/configmasterpres.tex b/configmasterpres.tex
index 6a687aa..faae542 100644
--- a/configmasterpres.tex
+++ b/configmasterpres.tex
@@ -1,7 +1,6 @@
-\documentclass{beamer}
+\documentclass[unknownkeysallowed]{beamer}
\mode<presentation>
{
- \usetheme{Goettingen}
}
\usepackage{german}
\usepackage[utf8x]{inputenc}
@@ -9,10 +8,14 @@
\usepackage{amsmath,amssymb}
\usepackage{listings,color}
\usepackage{graphicx}
-\usepackage{lxextras}
+%\usepackage{lxextras}
+
+\newcommand{\cmd}[1]{\texttt{#1}}
+
+\institute{RWU - University of Applied Sciences}
-\institute{Hochschule Ravensburg-Weingarten}
\definecolor{lbcolor}{RGB}{255,210,150}
+
\lstset{
language=C++,
numbers=left,
diff --git a/images/kernelversions.png b/images/kernelversions.png
index b265076..5eabf22 100644
--- a/images/kernelversions.png
+++ b/images/kernelversions.png
Binary files differ
diff --git a/kernel-devel/kernel-basics/pres_kernel-basics_de.tex b/kernel-devel/kernel-basics/pres_kernel-basics_de.tex
index 1e64d25..2ecf9f0 100644
--- a/kernel-devel/kernel-basics/pres_kernel-basics_de.tex
+++ b/kernel-devel/kernel-basics/pres_kernel-basics_de.tex
@@ -11,54 +11,77 @@
\begin{itemize}
\item Freie Software (GPL Version 2)
\item Auf vielen Plattformen lauffähig
-\item Hohe Skalierbarkeit vom Handy bis zum Supercomputer
+\item Hohe Skalierbarkeit vom Microcontroller bis zum Supercomputer
\item Große Anzahl integrierter Treiber
\item Einfache Entwicklung eigener Treiber
\item Codequalität auf hohem Niveau
\item Qualitätssicherung durch Code-Review unabhängiger Personen
-\item hohes Entwicklungstempo
-\item hervorragende Netzwerk-Fähigkeiten
-\item Echtzeit-Fähigkeit leicht und sauber erreichbar
+\item Hohes Entwicklungstempo
+\item Hervorragende Netzwerk-Fähigkeiten
+\item Echtzeitfähig
\end{itemize}
\end{frame}
-\subsubsection{Umfang - Linux 4.16-rc5 (16.03.2018)}
+\subsubsection{Umfang - Linux 5.6.0-rc5 - 10.03.2020 (4.16-rc5 - 16.03.2018)}
+
+\begin{frame}[fragile]
+\frametitle{Lines of code}
+\includegraphics[width=\textwidth]{images/kernel-loc.png}
+\end{frame}
\begin{frame}[fragile]
\frametitle{Lines of code by language}
\begin{verbatim}
-ansic: 16.686.769 (97.83%)
-asm: 295.663 (1.73%)
-perl: 26.424 (0.15%)
-sh: 19.168 (0.11%)
-python: 15.685 (0.09%)
-cpp: 4.919 (0.03%)
-yacc: 4.600 (0.03%)
-lex: 2.478 (0.01%)
-awk: 1.387 (0.01%)
-pascal: 231 (0.00%)
-sed: 5 (0.00%)
+ansic: 18.504.576 - 97.87% (16.686.769 - 97.83%)
+asm: 268.051 - 1.42% ( 295.663 - 1.73%)
+sh: 59.056 - 0.31% ( 19.168 - 0.11%)
+perl: 33.896 - 0.18% ( 26.424 - 0.15%)
+python: 27.018 - 0.14% ( 15.685 - 0.09%)
+cpp: 6.097 - 0.03% ( 4.919 - 0.03%)
+yacc: 4.808 - 0.03% ( 4.600 - 0.03%)
+lex: 2.600 - 0.01% ( 2.478 - 0.01%)
+awk: 1.060 - 0.01% ( 1.387 - 0.01%)
+ruby: 25 - 0.00%
+sed: 5 - 0.00% ( 5 - 0.00%)
+pascal: ( 231 - 0.00%)
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{Lines of code per folder}
\begin{verbatim}
-11.134.588 drivers 66% c=11.124.729 asm= 2.744
- 2.073.368 arch 11% c= 1.778.733 asm=290.614
- 869.993 fs 5% c= 869.993
- 775.712 sound 5% c= 775.712
- 712.404 net 5% c= 712.404
- 540.702 include 3% c= 538.568
- 286.340 tools 2% c= 253.768
- python= 12.196
- sh= 11.354
- perl= 4.012
- 191.741 kernel 2% c= 191.741
- 101.006 lib 1% c= 100.874
- 83.858 mm 1% c= 83.858
- 81.386 crypto 1% c= 81.386
- 59.271 security 1% c= 59.271
+ 12.602.748 drivers c=12.591.351 asm= 3.726
+(11.134.588 drivers 66% c=11.124.729 asm= 2.744)
+
+ 1.802.089 arch c= 1.530.033 asm=261.732
+(2.073.368 arch 11% c= 1.778.733 asm=290.614)
+
+ 937.844 fs 5% (869.993)
+ 914.081 sound 5% (775.712)
+ 804.064 net 5% (712.404)
+ 622.102 include 3% (538.568)
+ 228.445 kernel 2% (191.741)
+ 128.667 lib 1% (101.006)
+ 89.903 mm 1% ( 83.858)
+ 83.684 crypto 1% ( 81.386)
+ 66.309 security 1% ( 59.271)
+\end{verbatim}
+\end{frame}
+
+
+
+\begin{frame}[fragile]
+\frametitle{Lines of code per folder}
+\begin{verbatim}
+ 467.179 tools c= 386.108
+ sh= 48.947
+ python= 21.365
+ perl= 4.576
+
+( 286.340 tools 2% c= 253.768
+ python= 12.196
+ sh= 11.354
+ perl= 4.012)
\end{verbatim}
\end{frame}
@@ -222,13 +245,14 @@ Versionssprünge
\begin{itemize}
\item 05.11: 2.6.39\dots3.0
\item 02.15: 3.19\dots4.0
+\item 03.19: 4.20\dots5.0
\end{itemize}
\end{frame}
\begin{frame}
\includegraphics[height=6cm]{images/kernelversions.png}
- Quelle: http://article.sapub.org
+ Quelle: http://wikipedia.org
\end{frame}
diff --git a/linux-basics/what-is-linux/handout_what-is-linux_de.tex b/linux-basics/what-is-linux/handout_what-is-linux_de.tex
index c793fe6..f85bae4 100644
--- a/linux-basics/what-is-linux/handout_what-is-linux_de.tex
+++ b/linux-basics/what-is-linux/handout_what-is-linux_de.tex
@@ -4,18 +4,10 @@
\subsubsection{Geschichtlicher Hintergrund}
-Fr\"uhe elektronische Rechner, wie der in Abbildung \ref{img:eniac} gezeigte
-ENIAC, waren nicht frei programmierbar. Sie wurden f\"ur einen bestimmten
+Fr\"uhe elektronische Rechner waren nicht frei programmierbar. Sie wurden f\"ur einen bestimmten
Zweck gebaut, der ENIAC beispielsweise zur Berechnung von ballistischen
Flugbahnen.
-\begin{figure}[h]
-\centering
-\includegraphics[width=0.5\textwidth]{images/785px-Eniac.jpg}
-\caption{ENIAC (1947)}
-\label{img:eniac}
-\end{figure}
-
Im Laufe der 50-er und 60-er Jahre entwickelten sich die Rechner schnell
weiter, was vor allem durch die Erfindung des Transistors beschleunigt wurde.
Mit der freien Programmierbarkeit kam gleichzeitig die Nachfrage nach einem
@@ -31,14 +23,13 @@ Anforderungen und wenig durchdachten Konzepten. Die Systeme wurden
un\"uberschaubar und f\"ur viele der damaligen Rechner zu gross.
Erst das ab 1969 von Ken Thompson und Dennis Ritchie
-(Abbildung \ref{img:ken_ritchie}) entwickelte \emph{Unix} konnte sich auf
+entwickelte \emph{Unix} konnte sich auf
breiter Ebene durchsetzen und zu einem Standard entwickeln.
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{images/Thompson-sitting-Richie-standing-PDP11-1972.jpg}
\caption{Ken Thompson (sitzend) und Dennis Ritchie an einer PDP11 (1972)}
-\label{img:ken_ritchie}
\end{figure}
In der zweiten H\"alfte der 70-er Jahre ver\"anderte sich der Computer-Markt
@@ -51,10 +42,9 @@ zum Massenmarkt.
\centering
\includegraphics[width=0.3\textwidth]{images/Apple2.jpg}
\caption{Apple 2 (1977)}
-\label{img:apple2}
\end{figure}
-Als etwas ausgereiftere Homecomputer wie der Apple 2 (Abbildung \ref{img:apple2})
+Als etwas ausgereiftere Homecomputer wie der Apple 2
zunehmend auch in Betrieben als Erg\"anzung zu den vorhandenen Gro\ss rechnern,
beispielsweise als `intelligente' Terminals, eingesetzt wurden, beschloss
IBM, Marktf\"uhrer bei Gro\ss rechnern, dem etwas entgegen zu setzen. Man
@@ -174,10 +164,8 @@ Authentifizierungsprozess glaubhaft machen. Diesen Vorgang nennt man
\label{img:mainframe}
\end{figure}
-Abbildung \ref{img:mainframe} zeigt die Situation in schematischer Weise. Am
-Gro\ss rechner sind mehrere Terminals angeschlossen. Fr\"uher waren dies
-Fernschreiber, daher die Bezeichnung tty (von engl. teletype). Auf Abbildung
-\ref{img:ken_ritchie} kann man dies sehen -- da gab es noch keine Monitore.
+Am Gro\ss rechner sind mehrere Terminals angeschlossen. Fr\"uher waren dies
+Fernschreiber, daher die Bezeichnung tty (von engl. teletype).
Unter Linux sind dies sogenannte \emph{virtuelle Terminals}. Selbst auf einem
Laptop, der an nichts anderes angeschlossen ist, hat man mehrere solcher
diff --git a/linux-basics/what-is-linux/pres_what-is-linux_de.tex b/linux-basics/what-is-linux/pres_what-is-linux_de.tex
index e3e40a7..914f58b 100644
--- a/linux-basics/what-is-linux/pres_what-is-linux_de.tex
+++ b/linux-basics/what-is-linux/pres_what-is-linux_de.tex
@@ -169,12 +169,6 @@ Eine klassische Linux Distribution assistiert den Benutzer
\end{frame}
-\begin{frame}
- \includegraphics[height=7cm]{images/distro.png}
-
- Quelle: http://www.cyberciti.biz
-\end{frame}
-
\subsubsection{Linux im Alltag}
diff --git a/pres_master.tex b/pres_master.tex
index d402452..89ac222 100644
--- a/pres_master.tex
+++ b/pres_master.tex
@@ -71,7 +71,7 @@
\input{./flash-memory/ubi/pres_ubi_de.tex}
\input{./realtime/section}
-\input{./realtime/rt-basics/pres_rt-basics_de.tex}
+\input{./realtime/rt-basics/pres_rt-basics_en.tex}
\input{./realtime/rt-specialties/pres_rt-specialties_de.tex}
\input{./realtime/rt-app-basics/pres_rt-app-basics_en.tex}
diff --git a/tailhandout.tex b/tailhandout.tex
index 6b47932..e69de29 100644
--- a/tailhandout.tex
+++ b/tailhandout.tex
@@ -1 +0,0 @@
-\end{document}
diff --git a/vorl.tex b/vorl.tex
index 430ca2c..4d5adbb 100644
--- a/vorl.tex
+++ b/vorl.tex
@@ -13,19 +13,19 @@
\input{./flash-memory/mtd/pres_mtd_en.tex}
\input{./flash-memory/ubi/pres_ubi_en.tex}
\input{./linux-basics/section}
-\input{./linux-basics/boot-process/pres_boot-process_de.tex}
+\input{./linux-basics/boot-process/pres_boot-process_en.tex}
\input{./linux-basics/fromscratch_vs_debian/pres_fromscatch_vs_debian_en.tex}
\input{./application-devel/cross-devel/pres_cross-devel_de.tex}
\input{./linux-basics/udev-basics/pres_udev_en.tex}
\input{./kernel-devel/section}
-\input{./kernel-devel/module-basics/pres_module-basics_de.tex}
-\input{./kernel-devel/char-device/pres_char-device_de.tex}
+\input{./kernel-devel/module-basics/pres_module-basics_en.tex}
+\input{./kernel-devel/char-device/pres_char-device_en.tex}
\input{./kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex}
\input{./kernel-devel/kernel-tracing/pres_kernel-tracing_en.tex}
\input{./kernel-devel/linux-mm-basics/pres_linux-mm-basics_en.tex}
\input{./kernel-devel/uio-driver/pres_uio-driver_en.tex}
\input{./realtime/section}
-\input{./realtime/rt-basics/pres_rt-basics_de.tex}
+\input{./realtime/rt-basics/pres_rt-basics_en.tex}
\input{./realtime/rt-specialties/pres_rt-specialties_de.tex}
\input{./realtime/rt-app-basics/pres_rt-app-basics_en.tex}
\input{tailmasterpres}
diff --git a/vorl3.tex b/vorl3.tex
index 6f89abb..a189398 100644
--- a/vorl3.tex
+++ b/vorl3.tex
@@ -1,7 +1,6 @@
\input{configmasterpres}
\input{./kernel-devel/section}
-\input{./kernel-devel/module-basics/pres_module-basics_de.tex}
-\input{./kernel-devel/char-device/pres_char-device_de.tex}
+\input{./kernel-devel/char-device/pres_char-device_en.tex}
\input{./kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex}
\input{./kernel-devel/kernel-tracing/pres_kernel-tracing_en.tex}
\input{./kernel-devel/kernel-perf/pres_kernel-perf_en.tex}
diff --git a/vorl5.tex b/vorl5.tex
index 4644deb..e6722f2 100644
--- a/vorl5.tex
+++ b/vorl5.tex
@@ -1,6 +1,6 @@
\input{configmasterpres}
\input{./realtime/section}
-\input{./realtime/rt-basics/pres_rt-basics_de.tex}
+\input{./realtime/rt-basics/pres_rt-basics_en.tex}
\input{./realtime/rt-internals/pres_rt-internals_en.tex}
\input{./realtime/rt-specialties/pres_rt-specialties_de.tex}
\input{./realtime/rt-app-basics/pres_rt-app-basics_en.tex}