我想添加一个系统调用文档,并且有一个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;
}
如您所见,我想传递argc
和argv
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”,但是我遇到了许多我无法理解的代码错误。