NetBSD驱动入门

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
posted @ 2022-10-15 19:06  bsd80  阅读(253)  评论(0)    收藏  举报