NetBSD驱动的资料和FreeBSD相比几乎很少,这两天经过bing搜索才知道内核源码中
包含了几个入门示例。代码位置:/usr/src/sys/modules/examples/ (前提你已经安装了内核源码)。
照例来个最简单的hello
hello.c 代码如下:
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: hello.c,v 1.1 2015/05/13 07:07:36 pgoyette Exp $");
#include <sys/param.h>
#include <sys/module.h>
MODULE(MODULE_CLASS_MISC, hello, NULL);
static int
hello_modcmd(modcmd_t cmd, void *arg __unused)
{
switch (cmd) {
case MODULE_CMD_INIT:
printf("Example module loaded.\n");
break;
case MODULE_CMD_FINI:
printf("Example module unloaded.\n");
break;
case MODULE_CMD_STAT:
printf("Example module status queried.\n");
break;
default:
return ENOTTY;
}
return 0;
}
Makefile
KMOD= hello #编译输出的驱动模块名
SRCS= hello.c
.include <bsd.kmodule.mk>
编译:
$ make
查看目录这讴歌是否有hello.kmod
加载驱动模块:
$ sudo /sbin/modload ./hello.kmod
查看是否已经加载:
$ sudo /sbin/modstat | grep hello
卸载驱动模块:
$ sudo /sbin/modunload hello
标签:入门,MODULE,break,驱动,NetBSD,include,hello
From: https://www.cnblogs.com/bsd80/p/16794824.html