荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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软件 网络书店