README and make targets
This commit is contained in:
parent
e560ac6386
commit
c0ec581549
2 changed files with 61 additions and 2 deletions
9
Makefile
9
Makefile
|
@ -1,13 +1,18 @@
|
|||
obj-m += mod_hello.o
|
||||
|
||||
all: module helloctl/helloctl
|
||||
all: build info
|
||||
|
||||
build: mod_hello.ko helloctl/helloctl
|
||||
|
||||
helloctl/helloctl: ./helloctl/helloctl.c
|
||||
$(CC) -o $@ $<
|
||||
|
||||
module:
|
||||
mod_hello.ko: mod_hello.c
|
||||
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
|
||||
|
||||
info: mod_hello.ko
|
||||
modinfo $<
|
||||
|
||||
clean:
|
||||
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
|
||||
rm -f helloctl/helloctl *~
|
||||
|
|
54
README.md
54
README.md
|
@ -1,2 +1,56 @@
|
|||
# mod_hello
|
||||
|
||||
|
||||
## building
|
||||
|
||||
```shell
|
||||
make all
|
||||
```
|
||||
|
||||
This produces `./helloctl/helloctl` binary for talking to the `mod_hello` over
|
||||
ioctl through `/dev/helloctl`, as well as `./mod_hello.ko` kernel module
|
||||
itself.
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
### Host
|
||||
|
||||
```shell
|
||||
$> make build
|
||||
$> sudo insmod ./mod_hello.ko
|
||||
$> sudo dmesg | tail
|
||||
[ 1679.566426] [mod_hello] pid: 8418, comm: insmod
|
||||
[ 1679.566427] [mod_hello] module loaded.
|
||||
[ 1679.566428] [mod_hello] looking up 'files'
|
||||
[ 1679.574011] [mod_hello] files 0xffffffff87e57e40
|
||||
[ 1679.574013] [mod_hello] files (0xffffffff87e57e40): usage
|
||||
[ 1679.579120] [mod_hello] fib of 0 and 1 (up to 10000000): 8644293272739028509 (in only 5 jiffies)
|
||||
$> sudo ./helloctl/helloctl
|
||||
$> sudo dmesg | tail -1
|
||||
[ 1734.248270] [mod_hello] received command: 1
|
||||
```
|
||||
|
||||
### Container
|
||||
|
||||
Running ioctl's inside containers is a little tricky.
|
||||
Assuming we've already `insmod` the module above:
|
||||
|
||||
```shell
|
||||
sudo docker run -it --rm -v $(pwd)/helloctl/helloctl:/usr/bin/helloctl -v /dev/helloctl:/dev/helloctl fedora /usr/bin/helloctl
|
||||
```
|
||||
|
||||
You'll get a failure `Could not open /dev/helloctl`
|
||||
|
||||
```shell
|
||||
sudo docker run -it --rm -v $(pwd)/helloctl/helloctl:/usr/bin/helloctl -v /dev/helloctl:/dev/helloctl --privileged fedora /usr/bin/helloctl
|
||||
```
|
||||
|
||||
Now `dmesg | tail` will reflect the command ran successfully.
|
||||
|
||||
### cleanup
|
||||
|
||||
```shell
|
||||
make clean
|
||||
sudo rmmod mod_hello
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue