トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2008-2-26

FreeBSDのカーネルモジュールの作り方

[FreeBSD]
/usr/share/examples/kldとかmanとか見ると詳しく書いてある。

gcc -D_KERNEL -DKLD_MODULE -c test1.c -o test1.o
ld -d -warn-common -r -d -o test1.kld test1.o
ld -Bshareable -d -warn-common -o test1.ko test1.kld

で、何もしないカーネルモジュール

#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/module.h>

static int
test1_modevent(module_t mod, int type, void *unused)
{
        switch (type) {
        case MOD_LOAD:
                return 0;
        case MOD_UNLOAD:
                return 0;
        }
        return EINVAL;
}

static moduledata_t test1_mod = {
        "test1",
        test1_modevent,
        0
};
DECLARE_MODULE(test1, test1_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
MODULE_VERSION(test1, 1);