diff options
4 files changed, 100 insertions, 0 deletions
diff --git a/meta-skeleton/recipes-kernel/kernel-module-slave/files/COPYING b/meta-skeleton/recipes-kernel/kernel-module-slave/files/COPYING new file mode 100644 index 00000000000..286d9e8890c --- /dev/null +++ b/meta-skeleton/recipes-kernel/kernel-module-slave/files/COPYING @@ -0,0 +1,15 @@ +Copyright (C) 2020 Hubert CHAUMETTE + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/meta-skeleton/recipes-kernel/kernel-module-slave/files/Makefile b/meta-skeleton/recipes-kernel/kernel-module-slave/files/Makefile new file mode 100644 index 00000000000..edf12b7f31f --- /dev/null +++ b/meta-skeleton/recipes-kernel/kernel-module-slave/files/Makefile @@ -0,0 +1,16 @@ +SRC := $(shell pwd) + +obj-m := slave.o +# $src is a Kbuild variable. Using $SRC doesn't work. +ccflags-y := -I$(src)/recipe-sysroot/usr/include/kernel-module-master/ + +all: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) + +modules_install: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install + +clean: + rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c + rm -f Module.markers Module.symvers modules.order + rm -rf .tmp_versions Modules.symvers diff --git a/meta-skeleton/recipes-kernel/kernel-module-slave/files/slave.c b/meta-skeleton/recipes-kernel/kernel-module-slave/files/slave.c new file mode 100644 index 00000000000..b1d9b92cc6b --- /dev/null +++ b/meta-skeleton/recipes-kernel/kernel-module-slave/files/slave.c @@ -0,0 +1,52 @@ +/* + * External kernel module dependency exemple - slave module + * + * Copyright (C) 2020 Hubert CHAUMETTE + */ + +#include <linux/module.h> +#include <master.h> + +static int slave_notify(struct notifier_block *self, + unsigned long action, void *data); + +static struct notifier_block slave_nb = { + .notifier_call = slave_notify, +}; + +static int slave_notify(struct notifier_block *self, + unsigned long action, void *data) +{ + struct master_evt_data *d = (struct master_evt_data *)data; + + BUG_ON(data == NULL); + + switch (action) { + case MASTER_EVT_READ: + pr_info("slave: \"%.*s\" read from master\n", d->count, d->buf); + break; + case MASTER_EVT_WRITE: + pr_info("slave: \"%.*s\" written to master\n", d->count, d->buf); + break; + default: + break; + } + + return NOTIFY_DONE; +} + +static int __init slave_init(void) +{ + return master_notifier_register(&slave_nb); +} +module_init(slave_init); + +static void __exit slave_exit(void) +{ + master_notifier_unregister(&slave_nb); +} +module_exit(slave_exit); + +MODULE_AUTHOR("Hubert CHAUMETTE"); +MODULE_DESCRIPTION("External kernel module dependency exemple - slave module"); +MODULE_LICENSE("GPL"); diff --git a/meta-skeleton/recipes-kernel/kernel-module-slave/kernel-module-slave.bb b/meta-skeleton/recipes-kernel/kernel-module-slave/kernel-module-slave.bb new file mode 100644 index 00000000000..280fa815f3d --- /dev/null +++ b/meta-skeleton/recipes-kernel/kernel-module-slave/kernel-module-slave.bb @@ -0,0 +1,17 @@ +SUMMARY = "External kernel module dependency exemple - slave module" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=1c5a04927650c42822bb4b1de4641658" + +inherit module + +PN = "kernel-module-slave" +PV = "0.1" + +DEPENDS = "kernel-module-master" + +SRC_URI = "file://Makefile \ + file://slave.c \ + file://COPYING \ + " + +S = "${WORKDIR}" |