所以我正在使用一个非常基本的新系统调用来重新编译Linux内核,但每次我尝试编译它时都会出错.
#include <linux/linkage.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
SYSCALL_DEFINE2(strcpy1, char *, dest, char *, src) {
printk(KERN_ALERT "done system call strcpy...\n");
return 1;
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都会收到此错误.
cmps272/strcpy1.c:6:26:错误:预期')'在'char'之前令牌SYSCALL_DEFINE2(strcpy1,char*dest,char*src)
我尝试改变这一切,但它一直给我这个错误并停止编译.有任何想法吗?
小智 6
您的原始代码(在编辑之前)错过了参数类型和参数名称之间的逗号(根据SYSCALL_DEFINE2定义需要).
SYSCALL_DEFINE2(strcpy1, char *, dest, char *, src)
{
...
}
Run Code Online (Sandbox Code Playgroud)
编辑
修复了缺少逗号的问题,你仍然会错过#include <linux/syscalls.h>.它非常重要,因为它包含SYSCALL_DEFINE2()宏定义.请包括它.