如何将参数传递给链接功能?

时间:2019-10-29 17:25:43

标签: c kernel

我想添加一个系统调用文档,并且有一个asmlinkage函数。该函数必须带有2个参数。这些参数来自我称为系统调用的c docs。在下面,我显示了c docs:

#include <stdio.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <unistd.h>

int main(int argc,char*argv[])
{
    long int amma = syscall(335,argc,argv);
    printf("System call functions returned %ld\n", amma);
    return 0;
}

如您所见,我想传递argcargv char数组以进行一些文件操作。

首先,我这样编写了asmlinkage函数:

asmlinkage long function(int argc,char *argv[]){
  if(argc==2) 
       printk(KERN_INFO "Hello world"); // but it can not take argc
} 

此外,我在syscalls.h中添加了一行:

asmlinkage function(int,char*[]);

然后我正确地进行了编译,但是当我开始在用户空间中运行代码时,系统调用被杀死了。

我在此网站上找到了一个链接,但无法编译。主题所有者使用了“ SYSCALL_DEFINE”,但是我遇到了许多我无法理解的代码错误。

0 个答案:

没有答案