|
想动态的添加系统调用。
申明:我有259号系调,我直接覆盖了原来的内容
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#incldue <linux/kernel.h>
#incldue <linux/module.h>
#include <linux/init.h>
int sys_add(int a,int b)
{
int c;
c=2*(a+b);
return c;
}
int init_module(void)
{
extern long sys_call_table[];
sys_call_table[259]=(unsigned long)sys_add;
return 0;
}
void cleanup_module(void)
{
printk("goodbye!\n");
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#gcc -Wall -DMODULE -D__KERNEL__ -DLINUX -c add.c
(生成了add.o)
#insmod add.o
提示:
add.o:unresolved symbol sys_call_table
add.o:
Hint:You are trying to load a module without a GPL compatible license and it has unresolved symbols. The module may be trying to access GPLONLY symbols but the problem is more likely to be a coding or user error. Contact the module supplier for assistance,only they can help you .
觉得是init_module()有问题,我不知道sys_call_table[]的类型,这个是仿照书上面写的。请高手指点!
谁可以解释一下这个gcc的意义:
gcc -Wall -02 -DMODULE -D__KERNEL__ -DLINUX -c peda.c. -0 peda time.o
-I/usr/src/linux/include ---《边干边学-linux内核指导》page 166 |
|