From 4a3900e55354381f24530a5dca72ef0dc512ecab Mon Sep 17 00:00:00 2001
From: Peter Gerwinski <peter.gerwinski@hs-bochum.de>
Date: Mon, 11 Apr 2022 20:02:08 +0200
Subject: [PATCH] Beispiele 11.4.2022

---
 20220411/Makefile-modules |  2 ++
 20220411/cat-chardev-1.c  | 12 ++++++++++
 20220411/cat-chardev-2.c  | 16 +++++++++++++
 20220411/chardev-1.c      |  2 +-
 20220411/chardev-2.c      |  2 +-
 20220411/chardev-3.c      |  2 +-
 20220411/glibc-1.txt      |  6 +++++
 20220411/hello-1.c        |  7 ++++++
 20220411/hello-2.c        |  7 ++++++
 20220411/hello-3.c        |  7 ++++++
 20220411/modules-6.txt    | 50 +++++++++++++++++++++++++++++++++++++++
 20220411/modules-7.txt    | 20 ++++++++++++++++
 20220411/modules-8.txt    | 50 +++++++++++++++++++++++++++++++++++++++
 20220411/os-layers-1.jpg  |  1 +
 20220411/os-layers-2.jpg  |  1 +
 20220411/os-layers-3.jpg  |  1 +
 20220411/os-layers-4.jpg  |  1 +
 20220411/os-layers-5.jpg  |  1 +
 18 files changed, 185 insertions(+), 3 deletions(-)
 create mode 100644 20220411/cat-chardev-1.c
 create mode 100644 20220411/cat-chardev-2.c
 create mode 100644 20220411/glibc-1.txt
 create mode 100644 20220411/hello-1.c
 create mode 100644 20220411/hello-2.c
 create mode 100644 20220411/hello-3.c
 create mode 100644 20220411/modules-6.txt
 create mode 100644 20220411/modules-7.txt
 create mode 100644 20220411/modules-8.txt
 create mode 120000 20220411/os-layers-1.jpg
 create mode 120000 20220411/os-layers-2.jpg
 create mode 120000 20220411/os-layers-3.jpg
 create mode 120000 20220411/os-layers-4.jpg
 create mode 120000 20220411/os-layers-5.jpg

diff --git a/20220411/Makefile-modules b/20220411/Makefile-modules
index 5dfbaa8..3c490d6 100644
--- a/20220411/Makefile-modules
+++ b/20220411/Makefile-modules
@@ -1,4 +1,6 @@
 obj-m += chardev-1.o
+obj-m += chardev-2.o
+obj-m += chardev-3.o
 
 all:
 	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
diff --git a/20220411/cat-chardev-1.c b/20220411/cat-chardev-1.c
new file mode 100644
index 0000000..2e6bb3c
--- /dev/null
+++ b/20220411/cat-chardev-1.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char buffer[100];
+  FILE *f = fopen ("dev/chardev", "r");
+  fgets (buffer, 100, stdin);
+  fgets (buffer, 100, f);
+  printf ("%s\n", buffer);
+  fclose (f);
+  return 0;
+}
diff --git a/20220411/cat-chardev-2.c b/20220411/cat-chardev-2.c
new file mode 100644
index 0000000..7e2ceb9
--- /dev/null
+++ b/20220411/cat-chardev-2.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <error.h>
+#include <errno.h>
+
+int main (void)
+{
+  char buffer[100];
+  FILE *f = fopen ("dev/chardev", "r");
+  if (!f)
+    error (errno, errno, "could not open dev/chardev");
+  fgets (buffer, 100, stdin);
+  fgets (buffer, 100, f);
+  printf ("%s\n", buffer);
+  fclose (f);
+  return 0;
+}
diff --git a/20220411/chardev-1.c b/20220411/chardev-1.c
index 17a6651..f89459b 100644
--- a/20220411/chardev-1.c
+++ b/20220411/chardev-1.c
@@ -118,7 +118,7 @@ static int device_release(struct inode *inode, struct file *file)
 static ssize_t device_read(struct file *filp,	/* see include/linux/fs.h   */
 			   char *buffer,	/* buffer to fill with data */
 			   size_t length,	/* length of the buffer     */
-			   loff_t * offset)
+			   loff_t *offset)
 {
 	/*
 	 * Number of bytes actually written to the buffer 
diff --git a/20220411/chardev-2.c b/20220411/chardev-2.c
index 54b8e3f..b86c6d0 100644
--- a/20220411/chardev-2.c
+++ b/20220411/chardev-2.c
@@ -56,7 +56,7 @@ int init_module(void)
 	}
 
         // Create module class
-        printk(KERN_INFO "Creating device class LCD...\n");
+        printk(KERN_INFO "Creating device class ...\n");
         dev_Class = class_create(THIS_MODULE,DEVICE_NAME);
         if( dev_Class == NULL)
         {
diff --git a/20220411/chardev-3.c b/20220411/chardev-3.c
index 516a074..663c4a5 100644
--- a/20220411/chardev-3.c
+++ b/20220411/chardev-3.c
@@ -83,7 +83,7 @@ int init_module(void)
  */
 void cleanup_module(void)
 {
-        printk(KERN_INFO "module chardev-4 cleanup\n");
+        printk(KERN_INFO "module chardev-3 cleanup\n");
         //Unregister the device
         if (chr_dev)
           {
diff --git a/20220411/glibc-1.txt b/20220411/glibc-1.txt
new file mode 100644
index 0000000..0221b90
--- /dev/null
+++ b/20220411/glibc-1.txt
@@ -0,0 +1,6 @@
+cassini/home/peter/bo/2022ss/bs/20220411> dir -d glibc*
+drwxr-xr-x 73 peter peter     4096 Apr 11 13:29 glibc-2.28
+-rw-r--r--  1 peter peter   899676 Mär 17 23:12 glibc_2.28-10+deb10u1.debian.tar.xz
+-rw-r--r--  1 peter peter     8921 Mär 17 23:12 glibc_2.28-10+deb10u1.dsc
+-rw-r--r--  1 peter peter 17061292 Okt 30  2018 glibc_2.28.orig.tar.xz
+cassini/home/peter/bo/2022ss/bs/20220411> apt-get source libc6
diff --git a/20220411/hello-1.c b/20220411/hello-1.c
new file mode 100644
index 0000000..b19d80e
--- /dev/null
+++ b/20220411/hello-1.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main (void)
+{
+  printf ("Hello, world!\n");
+  return 0;
+}
diff --git a/20220411/hello-2.c b/20220411/hello-2.c
new file mode 100644
index 0000000..2dbbad9
--- /dev/null
+++ b/20220411/hello-2.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main (void)
+{
+  printf ("Hello, world!");
+  return 0;
+}
diff --git a/20220411/hello-3.c b/20220411/hello-3.c
new file mode 100644
index 0000000..b767f77
--- /dev/null
+++ b/20220411/hello-3.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main (void)
+{
+  puts ("Hello, world!");
+  return 0;
+}
diff --git a/20220411/modules-6.txt b/20220411/modules-6.txt
new file mode 100644
index 0000000..44cf5cf
--- /dev/null
+++ b/20220411/modules-6.txt
@@ -0,0 +1,50 @@
+cassini/home/peter/bo/2022ss/bs/20220404> sudo insmod chardev-1.ko
+cassini/home/peter/bo/2022ss/bs/20220404> sudo dmesg | tail -15
+[2143588.930267] usb 4-1.5: Manufacturer: Chicony Electronics Co.,Ltd.
+[2143588.930270] usb 4-1.5: SerialNumber: 200901010001
+[2143588.937888] uvcvideo: Found UVC 1.00 device USB2.0 HD UVC WebCam (04f2:b330)
+[2143588.955826] uvcvideo 4-1.5:1.0: Entity type for entity Extension 4 was not initialized!
+[2143588.955832] uvcvideo 4-1.5:1.0: Entity type for entity Processing 2 was not initialized!
+[2143588.955834] uvcvideo 4-1.5:1.0: Entity type for entity Camera 1 was not initialized!
+[2143588.955951] input: USB2.0 HD UVC WebCam: USB2.0 HD as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5/4-1.5:1.0/input/input426
+[2144883.840634] Hello world 1.
+[2144980.069509] Goodbye world 1.
+[2145413.353119] I was assigned major number 241. To talk to
+[2145413.353121] the driver, create a dev file with
+[2145413.353121] 'mknod /dev/chardev c 241 0'.
+[2145413.353121] Try various minor numbers. Try to cat and echo to
+[2145413.353122] the device file.
+[2145413.353122] Remove the device file and module when done.
+cassini/home/peter/bo/2022ss/bs/20220404> ls -l dev
+insgesamt 0
+crw-r--r-- 1 root root 241, 0 Apr  4 14:39 chardev
+cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
+I already told you 0 times Hello world!
+cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
+I already told you 1 times Hello world!
+cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
+I already told you 2 times Hello world!
+cassini/home/peter/bo/2022ss/bs/20220404> sudo rmmod chardev_1
+cassini/home/peter/bo/2022ss/bs/20220404> ls -l dev/chardev
+crw-r--r-- 1 root root 241, 0 Apr  4 14:39 dev/chardev
+cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
+cat: dev/chardev: Kein passendes Gerät bzw. keine passende Adresse gefunden
+cassini/home/peter/bo/2022ss/bs/20220404> cd ../20220411/
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l
+insgesamt 28
+-rw-r--r-- 1 peter peter 4069 Apr  4  2014 chardev-1.c
+-rw-r--r-- 1 peter peter 4659 Mai  5  2017 chardev-2.c
+-rw-r--r-- 1 peter peter 4997 Apr 26  2019 chardev-3.c
+lrwxrwxrwx 1 peter peter   16 Apr 10 12:31 Makefile -> Makefile-modules
+-rw-r--r-- 1 peter peter  159 Apr 10 12:35 Makefile-modules
+-rw-r--r-- 1 peter peter 2495 Apr 10 12:43 SCRATCH
+cassini/home/peter/bo/2022ss/bs/20220411> mkdir dev
+cassini/home/peter/bo/2022ss/bs/20220411> sudo mknod dev/chardev c 241 1
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev
+insgesamt 0
+crw-r--r-- 1 root root 241, 1 Apr 11 11:42 chardev
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/chardev
+crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
+cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev
+cat: dev/chardev: Kein passendes Gerät bzw. keine passende Adresse gefunden
+cassini/home/peter/bo/2022ss/bs/20220411>
diff --git a/20220411/modules-7.txt b/20220411/modules-7.txt
new file mode 100644
index 0000000..01223e8
--- /dev/null
+++ b/20220411/modules-7.txt
@@ -0,0 +1,20 @@
+/*
+ * Called when a process writes to dev file: echo "hi" > /dev/hello
+ */
+static ssize_t
+device_write(struct file *filp, const char *buff, size_t len, loff_t * off)
+{
+        printk(KERN_ALERT "Sorry, this operation isn't supported.\n");
+        return -EINVAL;
+}
+cassini/home/peter/bo/2022ss/bs/20220411> echo "Hallo" > dev/chardev
+bash: dev/chardev: Keine Berechtigung
+cassini/home/peter/bo/2022ss/bs/20220411> sudo su -
+[sudo] Passwort für peter:
+Das hat nicht funktioniert, bitte nochmal probieren.
+[sudo] Passwort für peter:
+root@cassini:~# . bash-settings.pg
+cassini/root# cd ~peter/bo/2022ss/bs/20220411/
+cassini/home/peter/bo/2022ss/bs/20220411# echo "Hallo" > dev/chardev
+-bash: echo: Schreibfehler: Das Argument ist ungültig.
+cassini/home/peter/bo/2022ss/bs/20220411#
diff --git a/20220411/modules-8.txt b/20220411/modules-8.txt
new file mode 100644
index 0000000..023faa5
--- /dev/null
+++ b/20220411/modules-8.txt
@@ -0,0 +1,50 @@
+brw-rw----  1 root disk      8,  32 Apr 11 12:57 sdc
+brw-rw----  1 root disk      8,  33 Apr 11 12:57 sdc1
+drwxr-xr-x  2 root root         400 Apr 11 12:57 block
+crw-------  1 root root    241,   0 Apr 11 13:00 chardev
+drwxr-xr-x  2 root root        4000 Apr 11 13:00 char
+drwxrwxrwt  2 root root          60 Apr 11 13:00 shm
+crw-rw-rw-  1 root tty       5,   2 Apr 11 13:00 ptmx
+cassini/home/peter/bo/2022ss/bs/20220411> cat /dev/chardev
+cat: /dev/chardev: Keine Berechtigung
+Sie haben neue Post in /var/mail/peter.
+cassini/home/peter/bo/2022ss/bs/20220411> sudo cat /dev/chardev
+I already told you 0 times Hello world!
+Sie haben Post in /var/mail/peter.
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/chardev
+crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
+cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev
+I already told you 1 times Hello world!
+cassini/home/peter/bo/2022ss/bs/20220411> sudo mknod dev/chardev0 c 241 0
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/
+insgesamt 0
+crw-r--r-- 1 root root 241, 1 Apr 11 11:42 chardev
+crw-r--r-- 1 root root 241, 0 Apr 11 13:04 chardev0
+cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev0
+I already told you 2 times Hello world!
+cassini/home/peter/bo/2022ss/bs/20220411> mknod dev/chardev0u c 241 0
+mknod: dev/chardev0u: Die Operation ist nicht erlaubt
+cassini/home/peter/bo/2022ss/bs/20220411> which mknod
+/bin/mknod
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l $(which mknod)
+-rwxr-xr-x 1 root root 68544 Feb 28  2019 /bin/mknod
+cassini/home/peter/bo/2022ss/bs/20220411> cat /dev/chardev
+cat: /dev/chardev: Keine Berechtigung
+cassini/home/peter/bo/2022ss/bs/20220411> sudo cat /dev/chardev
+I already told you 3 times Hello world!
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/* /dev/chardev
+crw------- 1 root root 241, 0 Apr 11 13:00 /dev/chardev
+crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
+crw-r--r-- 1 root root 241, 0 Apr 11 13:04 dev/chardev0
+cassini/home/peter/bo/2022ss/bs/20220411> sudo rmmod chardev_1
+rmmod: ERROR: Module chardev_1 is not currently loaded
+cassini/home/peter/bo/2022ss/bs/20220411> sudo rmmod chardev_3
+cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/* /dev/chardev
+ls: Zugriff auf '/dev/chardev' nicht möglich: Datei oder Verzeichnis nicht gefunden
+crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
+crw-r--r-- 1 root root 241, 0 Apr 11 13:04 dev/chardev0
+cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev
+cat: dev/chardev: Kein passendes Gerät bzw. keine passende Adresse gefunden
+cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev0
+cat: dev/chardev0: Kein passendes Gerät bzw. keine passende Adresse gefunden
+cassini/home/peter/bo/2022ss/bs/20220411>
diff --git a/20220411/os-layers-1.jpg b/20220411/os-layers-1.jpg
new file mode 120000
index 0000000..6dc99e9
--- /dev/null
+++ b/20220411/os-layers-1.jpg
@@ -0,0 +1 @@
+../common/os-layers-1.jpg
\ No newline at end of file
diff --git a/20220411/os-layers-2.jpg b/20220411/os-layers-2.jpg
new file mode 120000
index 0000000..4da385e
--- /dev/null
+++ b/20220411/os-layers-2.jpg
@@ -0,0 +1 @@
+../common/os-layers-2.jpg
\ No newline at end of file
diff --git a/20220411/os-layers-3.jpg b/20220411/os-layers-3.jpg
new file mode 120000
index 0000000..eaf5b59
--- /dev/null
+++ b/20220411/os-layers-3.jpg
@@ -0,0 +1 @@
+../common/os-layers-3.jpg
\ No newline at end of file
diff --git a/20220411/os-layers-4.jpg b/20220411/os-layers-4.jpg
new file mode 120000
index 0000000..efcbbd1
--- /dev/null
+++ b/20220411/os-layers-4.jpg
@@ -0,0 +1 @@
+../common/os-layers-4.jpg
\ No newline at end of file
diff --git a/20220411/os-layers-5.jpg b/20220411/os-layers-5.jpg
new file mode 120000
index 0000000..91cabe9
--- /dev/null
+++ b/20220411/os-layers-5.jpg
@@ -0,0 +1 @@
+../common/os-layers-5.jpg
\ No newline at end of file
-- 
GitLab