Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15173989
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: BSD

2008-03-20 17:36:49

NetBSD可加载模块入门BSD爱好者乐园yn;zX{:D8f

 BSD爱好者乐园+s@D~5\!jx7B,G

原文出自NetBSD官方网站

a yu"I J ad+J

并没有通过作者的许可,只是出于学习目的,请勿用于商业用途。BSD爱好者乐园Da/q4u4F qd!X2M4_

我翻译的有很多出入,本文由abutter重新翻译。

/M)O1?7i[ EN(a

 

#IGK F j@

绪论

iM r6X` X z)GK&E

在诸如GNU/Linux以及Microsfot Windows等大多数现代操作系统中,可加载内核模块( moduleLKM)非常的流行。有了它,你可以在内核运行时扩展其的功能,而不必重新(内核),更不用重启系统。可加载内核模块可以在内核运行时加载,以支持特定的设备以及伪设备。举例来说,几乎每个Linux设备驱动程序是以或者能以可加载内核模块的形式使用的。BSD爱好者乐园7I-Tt.F;@PfD

而在NetBSD中,可加载内核模块目前还不那样常见。本文编写时,仅有很少驱动程序(大部分的文件系统、兼容层和以及其他少数linuxrtc模拟之类的驱动程序)是以可加载内核模块的形式使用的。这种情况在不久的将来会有所改变。

"zN1Y q#_5|*q

可加载内核模块接口的最初设计目的是为了与SunOS可加载内核模块功能上保持一致。对/dev/lkm文件执行ioctl(2)调用可以控制lkm(4)功能,不过,你应该从不需要直接与/dev/lkm打交道,因为所有的(这些)操作都由modload(8)modunload(8)modstat(8)程序处理了。值得注意的是,为了使用可加载内核模块,你运行的内核必须是编译时是打开了LKM选项的。BSD爱好者乐园&g4e"EqrMj;r1j)^A

 BSD爱好者乐园*M6k)T A Oj]}"?j

编写可加载内核模块

9VCyP'j

我很乐意向你展示如何编写一个只进行FIBONACCI数计算的简单字符设备驱动,因此,我将此模块命名为fibo.o,并且让所有函数的名称以fibo_开头。这个驱动程序提供了从/dev/fibo0/dev/fibo78个子设备,而每个子设备支持下面几个函数:BSD爱好者乐园+y]@YM)r

阅读(581) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~