freebsd 4.x 内核网络模块编译要点
2009-05-13 00:43:33来源:未知 阅读 ()
1. 目录
net -- 链路层驱动
netinet -- tcp/ip堆栈
module -- 模块家目录
xxx -- 单独建立一个目录,从其他目录拷贝
一个Makefile就可以了,修改里面的文件
3. 修改/sys/i386/files文件,模块定义
对应核配置文件中的pseudo-device xxxxx
3. "opt_xxx.h" 的定义,开关宏定义, 对应核配置文件中的OPTIONS XXX
修改/sys/i386/options文件
4. config -d 目录 kern.conf,到指定目录下编译内核
5. 初始调试时,不要将模块编译到内核中,稳定后再编译到内核中。
修改/sys/modules/Makefile
6. 模块源文件中尽量使用static定义全局变量,避免冲突
对于多源文件共享变量,不要使用static定义
7. 钩子函数挂接位置
链路层: if_ethersubr.c
tcp/ip层: ip_output.c ip_input.c tcp_output.c tcp_input.c
8. 钩子定义
#ifdef _KERNEL
typedef int myfunc_t(args...);
extern myfunc_t *myfunc_ptr;
#endif /* _KERNEL */
附值:myfunc_ptr = myfunc;
使用:myfunc_ptr(args...)
9. 头文件的引用顺序
很多头文件必须顺序引用,否则报错。尤其要注意xxx_var.h之类的。
10. 对于数组指针要仔细判断区间范围,避免溢出。特别是sysctl变量
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/132/showart_10673.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:测试一下这东西....
下一篇:freebsd 升级
- 讨论一下package和port一起使用的问题。 2009-05-13
- 内核编译 修改了操作系统名称,改如何改回来? 2009-05-13
- FreeBSD编译内核的详细过程 2009-05-13
- 我的FreeBSD内核编译 2009-05-13
- apache之DSO原理 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash