免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1597 | 回复: 1
打印 上一主题 下一主题

【急】模块加载时出现错误,望指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-23 16:10 |只看该作者 |倒序浏览
源程序如下,主要实现系统调用的功能,用模块实现。
内核2.6.23.
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/unistd.h>
#include <linux/time.h>
#include <asm/uaccess.h>
#include <linux/sched.h>
#define __NR_pedagogictime 223
MODULE_DESCRIPTION("My Sys_pedagogictime()");
MODULE_AUTHOR("Youyou.");
static int (*anything_saved)(void);
static int sys_pedagogictime(struct timeval *tv)
{

struct timeval ktv;
do_gettimeofday(&ktv);
if(copy_to_user(tv,&ktv,sizeof(ktv)))
{
  return - EFAULT;
}
// printk(KERN_ALERT"Pid %ld called sys_gettimeofday().\n",(long)current->pid);
return 0;
}
int __init init_addsyscall(void)
{
// printk(KERN_ALERT"addsyscall initializing...\n");
unsigned long *syscaltable;
syscaltable=(unsigned long*)0xc061a540;//syscalltable的内存地址
anything_saved = (int(*)(void))(syscaltable[__NR_pedagogictime]);
syscaltable[__NR_pedagogictime] = (unsigned long)sys_pedagogictime;
return 0;
}
void __exit exit_addsyscall(void)
{
//printk(KERN_ALERT"addsyscall exiting...\n");
unsigned long *syscaltable;
syscaltable=(unsigned long*)0xc061a540;
syscaltable[__NR_pedagogictime] = (unsigned long)anything_saved;
}
module_init(init_addsyscall);
module_exit(exit_addsyscall);

加载时,错误如下
[root@localhost SysCallM]#
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: Oops: 0003 [#1]
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: SMP
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: CPU:    0
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: EIP:    0060:[<f898e005>]    Tainted: P        VLI
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: EFLAGS: 00010286   (2.6.23.12 #1)
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: EIP is at init_module+0x5/0x17 [pedagogictime]
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: eax: c043d418   ebx: e8e5d174   ecx: 00000000   edx: ffffffff
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: esi: e8e5d000   edi: e8e5d198   ebp: f8d36380   esp: e09b7ed0
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: ds: 007b   es: 007b   fs: 00d8  gs: 0033  ss: 0068
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: Process insmod (pid: 3493, ti=e09b7000 task=e8c9cc60 task.ti=e09b7000)
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: Stack: c044a434 00000000 00000000 c06a6fc2 00000000 0000f18b 000004d8 ffffffff
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel:        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel:        00000000 00000000 00000000 00000000 00000000 00000000 00000020 f8dd14fc
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: Call Trace:
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel:  [<c044a434>] sys_init_module+0x133d/0x1481
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel:  [<c0457f85>] audit_syscall_exit+0x2aa/0x2c6
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel:  [<c04eb214>] copy_to_user+0x0/0x48
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel:  [<c0404fd6>] syscall_call+0x7/0xb
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel:  =======================
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: Code: <c7> 05 bc a8 61 c0 00 60 d3 f8 a3 80 75 d3 f8 31 c0 c3 6e 61 6d 65
Message from [email=syslogd@localhost]syslogd@localhost[/email] at Dec 23 14:37:45 ...
kernel: EIP: [<f898e005>] init_module+0x5/0x17 [pedagogictime] SS:ESP 0068:e09b7ed0
[root@localhost SysCallM]#

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2007-12-24 09:13 |只看该作者

回复 #1 yoyolu05 的帖子

这个报错信息你真应该处理下,例如说用 grep 把以 Message from 开头的行过滤掉,这样看起来会清晰许多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP