荔园在线

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

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


发信人: cycker (快过年吧.我想回家), 信区: Linux
标  题: Linux 可卸载内核模块完全指南(十八)(转寄)[转载]
发信站: 荔园晨风BBS站 (Thu Jan  2 18:24:27 2003), 站内信件

【 以下文字转载自 cycker 的信箱 】
【 原文由 xiaofong@bbs.pku.edu.cn 所发表 】
发信人: chenhao (努力学习), 信区: Linux
标  题: Linux 可卸载内核模块完全指南(十八)
发信站: 北大未名站 (2000年11月20日01:27:42 星期一) , 转信

第五部分 最近的一些东西:2.2.x版本的内核



5.1 对于LKM作者来说,一些主要的不同点

Linux有了一个新的主版本:2.2在LKM编程上,他带给我们一些小的改变。这一部分将会帮
助你适应这些变化,并且列出了大的一些变化。[注意:关于新的版本的内核,会有另一个
发布版本]


我会向你介绍一些新的宏和函数来帮助你开发2.2版本的内核的LKM。要获得每一个确切的
变化可以看新的头文件linux/module.h。这个文件在2.1.18版本的内核中被完全的重写了
。首先让我们来看看一些可以帮助我们更方便的处理系统调用表的宏:


宏描述

EXPORT_NO_SYMBOLS:这一个相当于旧版本内核的register_symtab(NULL)

EXPORT_SYMTAB:如果你想输出一些符号的话,必须在linux/module.h前面定义这个宏

EXPORT_SYMBOL(name):输出名字叫'name'的宏

EXPORT_SYMBOL_NOVERS(name):没有版本信息的输出符号


用户空间的存取函数也有很大的变化。因此我会在这里列出来(只要包含asm/uaccess.h来
使用他们):

函数描述


int access_ok (int type, unsigned long addr, unsigned long size);

这个函数检查是否当前进程允许存取某个地址


unsigned long copy_from_user (unsigned long to, unsigned long from, unsigned l
ong len);

这个是新的memcpy_tofs函数


unsigned long copy_to_user (unsigned long to, unsigned long from, unsigned lon
g len);

这是相对应的copy_from_user(...)


你没有必要使用access_ok(...),因为上面列出的函数都自己检查这个。还有许多不一样
的地方,但是你可以看看linux/module.h来获得一个详细的列表。


我最后想提一件事情。我写了很多关于内核守护进程(kerneld)的东西。2.2版的内核不
会再使用kerneld了。他使用另外一种方法来实现内核空间的request_module(...)函数-叫
做kmod。kmod完全是运行在内核空间的(不再IPC到用户空间了)。对于LKM程序员来说,
没有什么大的变化。你还是可以使用request_module(...)来加载模块。因此LKM传染者还
是可以在2.2的内核中使用。


我很抱歉关于2.2内核只有这么少的东西。但是目前我正在写一个关于2.2内核安全的论文
(特别是LKM的)。因此请注意新的THC发布的论文。我甚至计划工作在一些BSD系统上(F
reeBSD,OpenBSD,例如)但是这会发几个月的时间。





--
※ 来源:.北大未名站 bbs.pku.edu.cn [FROM: 162.105.45.129]
--
※ 转寄:·北大未名站 bbs.pku.edu.cn·[FROM: 210.39.3.50]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.36.220]


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

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店