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