Chinaunix
标题:
钩子的初始化
[打印本页]
作者:
hbanyin
时间:
2010-11-09 14:58
标题:
钩子的初始化
我想了解钩子函数的初始化问题 但是一直搞不太明白 我用的是linux2.6.28.10版本的内核 内核中关于hook_init的定义是这样的:
static void hook_init(void)
{
static int first = 1;
if (first) {
first = 0;
hook_base = ioremap(HOOK_MEM_BASE_ADDR, 8192);
}
}
我想知道这段代码是什么意思
例如其中的8192是什么?
为什么初试first赋值为1?
hook_base是什么?
作者:
Godbach
时间:
2010-11-09 17:47
这个是那个文件里的。
作者:
hbanyin
时间:
2010-11-09 18:47
arch/cris/arch-v32/mach-a3/vcs_hook.c, line 22
作者:
Godbach
时间:
2010-11-09 19:13
你想分析什么东西,是 Netfilter 的 hook 函数吗?
作者:
hbanyin
时间:
2010-11-09 19:17
对 我现在正在分析hook函数 我想知道上面那个函数初始化时都做了哪些操作
作者:
烟雾弹下的真实
时间:
2010-11-11 11:15
将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问,8192是这个虚拟地址空间的大小;hook_base指向这个hook空间的首地址,得到这个空间的数据可以用首地址加offset的方式;
为什么要定义局部静态变量first,可能是为了判断是否有可用的内存页吧。
作者:
烟雾弹下的真实
时间:
2010-11-11 11:23
错了错了,first定义为局部静态变量,当执行这个函数离开函数作用域后,first一致为0 直到程序结束才能释放。这样,hook_base = ioremap(HOOK_MEM_BASE_ADDR, 8192)在调用一次后就不会被重复调用了,因为程序结束前if(first)判断为假。
作者:
hbanyin
时间:
2010-11-11 16:50
回复
7#
烟雾弹下的真实
谢谢哈 你这么一说我好像明白多了。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2