荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: georgehill (清风浮云 人生), 信区: Linux
标 题: FreeBSD kld简介 (2)(转寄)
发信站: BBS 荔园晨风站 (Wed Oct 25 17:36:43 2000), 站内信件
【 以下文字转载自 georgehill 的信箱 】
【 原文由 georgehill.bbs@smth.org 所发表 】
发信人: hhuu (不知道爱我的是爱我的人), 信区: FreeBSD
标 题: FreeBSD kld简介 (2)(转寄)
发信站: BBS 水木清华站 (Wed Oct 25 00:56:34 2000)
我们都知道kld有什么好处了,那么就开始作
一个吧. 标准的例子在/usr/share/example/kld.
btw: 3.x系列的还有lkm的目录,有人愿意看吗?
kld目录中有两个子目录,对应了两种主要的方法.
写设备驱动(cdev)和增加系统调用(syscall).
我们还是从一般的情况开始吧.
所有的kld都会有一个类似的函数:
static int
load_handler (module_t mod, int what, void *arg)
{
int err=0;
switch(what) {
case MOD_LOAD:
........
break;
case MOD_UNLOAD:
.......
break;
default:
err=EINVAL;
break;
}
return (err);
}
大家都觉得很面善吧.看上去和init_module没有太大
的区别.上面的函数格式格式可以在/usr/include/sys/module.h
中找到.
typedef int (*modeventhand_t)(module_t mod, int what, void *arg);
这个module_t mod是指向module结构的指针.从它可以牵出所有的
被载入的模块.
int what是modeventtype_t的值之一.
MOD_LOAD:
MOD_UNLOAD:
MOD_SHUTDOWN: 上面两个就不用说了.这个shutdown的意思
似乎是指机器shutdown时kld的行为.
---------- 待续
--
行列中 作不朽文章
谈笑间 论古今英雄
痴狂里 诉红尘情爱
来去时 不枉一生风流
--------- bbs.ntu.edu.tw
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.161.18]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.116]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店