diff --git a/20220411/Makefile-modules b/20220411/Makefile-modules index 5dfbaa80b8a97151b02d6b52423cd8d29cd5b0b9..3c490d6fffff190bc59a16ebdd38ffdab1348d2c 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 0000000000000000000000000000000000000000..2e6bb3c88d55b11996f1f72ca6d010e441f8b9b7 --- /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 0000000000000000000000000000000000000000..7e2ceb9b8c0d94d18e86044fc516896aefbde3a5 --- /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 17a6651a33313322de202fbcb6bbf82333c0b766..f89459b69968c15a25de986615b329fc3d339a66 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 54b8e3f30a580c7896ea18a0e4358059a6c03a48..b86c6d0dbf1636416ed36d724a7c0bc84f200121 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 516a074f806e3f600009b39ca912bf5ab69e3989..663c4a555ba554c69b8a3ac41228254e40f643e3 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 0000000000000000000000000000000000000000..0221b903ed5da4ad46da65d76b7ae5cccd346e66 --- /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 0000000000000000000000000000000000000000..b19d80e9bd0bd7c5ed8f54b20c6a50d9166f03ac --- /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 0000000000000000000000000000000000000000..2dbbad99d102df43d00779483f789f03274353ca --- /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 0000000000000000000000000000000000000000..b767f77cd3a7328e5f45b60e674d32a647386509 --- /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 0000000000000000000000000000000000000000..44cf5cfdc978305263273d002535a5343de46c65 --- /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 0000000000000000000000000000000000000000..01223e888e037595b537f831d803f55a1c8861b6 --- /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 0000000000000000000000000000000000000000..023faa54a15592852cd90f64e5eff75e8da63231 --- /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 0000000000000000000000000000000000000000..6dc99e9e12dbc84e908c37974c7d528be014d587 --- /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 0000000000000000000000000000000000000000..4da385ea396af0f9c7ed79b23a183a3b5618b445 --- /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 0000000000000000000000000000000000000000..eaf5b599709e39d1c51dfdac28843c31b3fa971c --- /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 0000000000000000000000000000000000000000..efcbbd1827ff55f225fee0b77b8bfb5c6cff980c --- /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 0000000000000000000000000000000000000000..91cabe9241f19ece833cb22e8f16587153f246a2 --- /dev/null +++ b/20220411/os-layers-5.jpg @@ -0,0 +1 @@ +../common/os-layers-5.jpg \ No newline at end of file