编程论坛's Archiver

昨日之风 发表于 2008-4-23 20:29

这样修改函数对不对?

这是在linux下系统调用的时候用

原:_syscall1(int,mycall,int,ret)
修改:int mycall(int ret)
{return syscall(__NR_mycall,ret);
}

那么  _syscall2(int,mycopy,const char *,s_file,const char *,t_file)
能不能修改成:
int mycopy(const char * s_file,const char * t_file)
{return(__NR_mycopy,* s_file,* t_file);
}

附:mycopy在sys.c中的定义  其中  操作正确返回0 否则返回其它值
asmlinkage int sys_mycopy(const char* s_file, const char* t_file){




}  

我的问题:1、如上面  能否修改
          2、为什么我使用_syscall1(int,mycall,int,ret)不能调用  会报错  而
int mycall(int ret)
{return syscall(__NR_mycall,ret);
}可以,这是什么原因?

guixiaolan 发表于 2008-4-23 20:53

呵,这是Linux内核下的函数吗?
Linux下C的调用什么的,有很多可能与TC什么的有所不同.

昨日之风 发表于 2008-4-24 18:18

回复 2# 的帖子

恩,我就是想添加一个系统调用函数。
但是:_syscall1(int,mycall,int,ret)这种形式老是报错
只能修改,但是修改后无法完成任务

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.