diff --git a/examples/kernel-module/.gitignore b/examples/kernel-module/.gitignore new file mode 100644 index 0000000..5869bdb --- /dev/null +++ b/examples/kernel-module/.gitignore @@ -0,0 +1,14 @@ +.*.cmd +.tmp_versions +Module.symvers +*.ko +*.mod.c +*.o.d +*.o +modules.order +*.gcno +.#* +GPATH +GRTAGS +GTAGS +.cache.mk diff --git a/examples/kernel-module/.out-of-tree.toml b/examples/kernel-module/.out-of-tree.toml new file mode 100644 index 0000000..82b458c --- /dev/null +++ b/examples/kernel-module/.out-of-tree.toml @@ -0,0 +1,17 @@ +# out-of-tree configuration file +# docs at https://out-of-tree.io +name = "out-of-tree module example" +type = "module" + +[[supported_kernels]] +# Can be Ubuntu/CentOS/Debian/etc. +distro_type = "Ubuntu" +# regex for `uname -r` +# See also: regex-golang.appspot.com +release_mask = "4.4.0-70-.*" + +# [[supported_kernels]] may be defined unlimited number of times +[[supported_kernels]] +distro_type = "Ubuntu" +# Also you can use only one kernel +release_mask = "4.15.0-29-generic" diff --git a/examples/kernel-module/Makefile b/examples/kernel-module/Makefile new file mode 100644 index 0000000..c41fcd3 --- /dev/null +++ b/examples/kernel-module/Makefile @@ -0,0 +1,15 @@ +# out-of-tree called make with two arguments -- kernel headers path and name +# of target binary that MUST be produced by makefile +# e.g.: +# make KERNEL=/lib/modules/4.8.0-58-generic/build TARGET=hello-world.ko +KERNEL := /lib/modules/$(shell uname -r)/build +TARGET := out-of-tree-module-example + +obj-m += $(TARGET).o +$(TARGET)-objs = module.o + +all: + make -C $(KERNEL) M=$(PWD) modules + +clean: + make -C $(KERNEL) M=$(PWD) clean diff --git a/examples/kernel-module/README.md b/examples/kernel-module/README.md new file mode 100644 index 0000000..e684b0f --- /dev/null +++ b/examples/kernel-module/README.md @@ -0,0 +1,3 @@ +# out-of-tree kernel module example + +See .out-of-tree.toml diff --git a/examples/kernel-module/module.c b/examples/kernel-module/module.c new file mode 100644 index 0000000..3800135 --- /dev/null +++ b/examples/kernel-module/module.c @@ -0,0 +1,13 @@ +#include +#include + +int init_module(void) +{ + return 0; +} + +void cleanup_module(void) +{ +} + +MODULE_LICENSE("GPL");