当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]内核版本2.6.17.13中添加系统调用不成功……
帖子发表于 : 2007-03-10 22:40 

注册: 2006-11-01 20:45
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
急切的希望有人能伸出援手,不管是解答还是帮我顶起来,谢谢! :cry:
我是这样添加的:
在/usr/src/linux/arch/i386/kernel/syscall_table.s最下面加一行.long youcall

/usr/scr/linux/include/asm-i386/unistd.h中间加上#define __NR_youcall 317,修改NR_syscalls,呈现为下:
……
#define __NR_vmsplice 316
#define __NR_youcall 317 //这行是我加上的
#ifdef __KERNEL__

#define NR_syscalls 318
……

在/usr/scr/linux/kernel/sys.c文件最下面添加:
asmlinkage long sys_youcall(long a){
return a;
}

然后重新编译内核如下:
root@localhost:/usr/src/linux# make mrproper
root@localhost:/usr/src/linux# make xconfig //直接关闭,使用默认设置
root@localhost:/usr/src/linux#make dep
root@localhost:/usr/src/linux#make clean
root@localhost:/usr/src/linux#make bzImage
root@localhost:/usr/src/linux# make install
root@localhost:/usr/src/linux# make modules
root@localhost:/usr/src/linux# make modules_install
root@localhost:/usr/src/linux# /usr/sbin/mkinitramfs -o /boot/initrd.img-2.6.17.6 /lib/modules/2.6.17.13-ubuntu1

最后打开 /boot/grub/menu.lst,写入新内核信息,并重启,从进入新建内核。

建立一个test.c文件,如下:
#include <stdio.h>
#include </usr/src/linux-source-2.6.17/include/asm/unistd.h>
#include <errno.h>
_syscall1(long,youcall,long,a)
int main(){
printf("%d\n",youcall(17));
return 0;
}

编译显示:
root@MagicWorld:~/Desktop# gcc -o test test.c
test.c:5: 错误: syntax error before ‘youcall’
test.c: 在函数 ‘_syscall1’ 中:
test.c:7: 错误: syntax error before ‘{’ token

新内核其他功能正常。
同学用几乎一样的方法却可以实现,但他内核是2.6.15的,是内核版本的原因吗?还是别的,我实在是弄不明白了,希望有前辈能指点一下,不胜感激!


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-04-02 21:51 

注册: 2007-04-02 21:09
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
编译器版本?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译