FreeBSD4.0 动态内核链接机制(KLD)编程指南

2009-05-13 04:01:48来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


FreeBSD4.0 动态内核链接机制(KLD)编程指南
本文出自: http://www.asfocus.com (2001-07-04 09:04:00)

作者:Andrew Reiter   
整理:小四   
出处:http://www.watson.org/~arr/  
主页:http://www.nsfocus.com  
日期:2000-10-26  
目录:  
★ 简介  
★ 所有KLD的共性  
★ KLD系统调用实现框架  
★ KLD字符型设备驱动程序实现框架  
★ 参考资料  
★ 简介  
本文的目的在于介绍FreeBSD操作系统下基础的KLD开发设计技术。  
FreeBSD 3.1下提供过可加载内核模块技术(LKM),FreeBSD 4.0下提供的动态内  
核链接机制(KLD),可以简单地理解成LKM的升级。采用KLD,可以增加系统调用、调  
试设备驱动程序、提供访问内核数据空间的方便接口。下面我们对比一下LKM和KLD:  
--------------------------------------------------------------------------  
1. LKM采用用户态的链接器重定位二进制数据后再压入内核空间。  
KLD机制由内核亲自进行重定位操作  
2. LKM采用特殊的数据结构,LKM Driver了解这种数据结构,并通过它与内核交互,  
比如VFS LKM采用一个结构,该结构里包含指向VFS TABLES的指针。  
LKM的目的单纯明确,很难将LKM代码移植成真正的内核代码。  
KLD采用常规代码,一个KLD文件可以不包含任何模块,也可以包含多个模块。每  
个模块均包含自初始化代码,并完成自注册。  
KLD的代码和内核代码保持一致。很容易从内核中提取部分代码移植成KLD代码。  
3. 现在KLD的依赖关系和版本信息从内核里剥离出来,完全位于模块层。  
--------------------------------------------------------------------------  
这份指南直奔两个KLD开发者感兴趣的主题,希望你具有基本的FreeBSD内核知识  
以及K & R C编程技能。必须提醒的是,例子代码在FreeBSD 4.0下调试通过。下面我  
们将要介绍的主题有三:  
--------------------------------------------------------------------------  
1. 所有KLD的共性  
2. KLD系统调用实现框架  
3. KLD字符型设备驱动程序实现框架  
--------------------------------------------------------------------------  
本文的目的是帮助那些正在学习KLD编程的朋友快速掌握KLD编程接口,进入更高  
层次。  
★ 所有KLD的共性  
所有的KLD代码都有一个主入口函数和一个宏,并且简单地采用Makefile文件编译。  
--------------------------------------------------------------------------  
1. 主入口函数,或者说加载/卸载句柄  
2. DECLARE_MODULE()宏  
3. 利用Makefile文件进行编译  
--------------------------------------------------------------------------  
下面是一个典型的主入口函数:  
--------------------------------------------------------------------------  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD6.0 IPFW配置

下一篇:FreeBSD 安全 HOWTO