LinuxSir.cn,穿越时空的Linuxsir!

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

求教如何添加自己的系统调用

[复制链接]
发表于 2004-3-25 20:26:16 | 显示全部楼层 |阅读模式
我调用getuid()得到uid=0,就想添加一个简单的系统调用,把uid改成1来试验系统调用是否成功,具体操作如下:
在/usr/src/linux-2.4.20-8/include/asm-i386/unistd.h添加
#define __NR_mysyscall           255
在/usr/src/linux-2.4.20-8/arch/i386/kernel/entry.S添加
.long SYMBOL_NAME(sys_mysyscall)
在/usr/src/linux-2.4.20-8/arch/i386/kernel/sys.c添加
asmlinkage int sys_mysyscall(void)
{
  int errno;
  current->uid = current->euid = current->suid = current->fsuid = 1;
  return 0;
}
我的用户态程序是:
#include</usr/src/linux-2.4.20-8/include/asm-i386/unistd.h>
_syscall0(int,mysyscall)

int main()
{
  mysyscall();
  printf("my uid is:%d.\n",getuid());
}
********************************
我用的系统是redhat9.0,在用gcc编译时出现了这样的问题:
[root@localhost learn]# gcc -o syscall syscall.c
syscall.c: In function `mysyscall':
syscall.c:3: `errno' undeclared (first use in this function)
syscall.c:3: (Each undeclared identifier is reported only once
syscall.c:3: for each function it appears in.)
不知道问题出在哪里了,我在asmlinkage int sys_mysyscall(void)中定义errno就是为了解决这个错误,可加了也没有用.请高手们指点如何改正错误,同时指导一下怎么添加自己的系统调用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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