LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 782|回复: 1

一个 module的问题

[复制链接]
发表于 2002-11-11 20:24:01 | 显示全部楼层 |阅读模式
#include <linux/init.h>                                                         
#include <linux/time.h>                                                         
#include <linux/sched.h>                                                        
#include <asm/uaccess.h>                                                        
#define __NR_pedagogictime 238                                                  
MODULE_DESCRIPTION("My sys_pedagogictime()");                                   
MODULE_LICENSE("GPL");                                                         
static int (*anything_saved)(void);                                             
static int sys_pedagogictime(struct timeval *tv)                                
{                                                                              
    struct timeval ktv;                                                         
    MOD_INC_USE_COUNT;                                                         
    do_gettimeofday(&ktv);                                                      
    if (copy_to_user(tv, &ktv, sizeof(ktv))){                                   
            MOD_DEC_USE_COUNT;                                                  
            return -EFAULT;                                                     
    }                                                                           
    printk(KERN_ALERT "id %d called sys_gettimeofday().\n",current->pid);      
    MOD_DEC_USE_COUNT;                                                         
    return 0;                                                                  
}                                                                              
int __init init_addsyscall(void)                                                
{                                                                              
    extern long sys_call_table[];                                               
    anything_saved = (int(*)(void))(sys_call_table[__NR_pedagogictime]);        
    sys_call_table[__NR_pedagogictime] = (unsigned long)sys_pedagogictime;      
    return 0;                                                                  
}                                                                              
void __exit exit_addsyscall(void)                                               
{                                                                              
    extern long sys_call_table[];                                               
    anything_saved = (int(*)(void))(sys_call_table[__NR_pedagogictime]);        
    sys_call_table[__NR_pedagogictime] = (unsigned long)sys_pedagogictime;      
    return 0;                                                                  
}                                                                              
void __exit exit_addsyscall(void)                                               
{                                                                              
    extern long sys_call_table[];                                               
    sys_call_table[__NR_pedagogictime] = (unsigned long)anything_saved;         
}                                                                              
module_init(init_addsyscall);                                                   
module_exit(exit_addsyscall);                                                   
编译加载:                                                                     
[root@dany samples]# gcc -c pedagogictime.c -D __KERNEL__ -D MODULE -I         
/usr/src/linux/include/ -O2 -DLINUX -Wall                                       
[root@dany samples]# insmod pedagogictime.o                                    
pedagogictime.o: unresolved symbol sys_call_table                              
[root@dany samples]#                                                            
该如何解决才好啊?请高手指点一二!谢谢了!!!
发表于 2002-11-12 08:56:08 | 显示全部楼层
首先,我承认目前我还不懂module编程,但看了你的程序,我想问一个问题:为什么这个程序没有包含头文件<linux/module.h>,我看书上介绍模块编程是一定要包含这个头文件的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表