所以我正在使用一个非常基本的新系统调用来重新编译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;
}
无论我做什么,我都会收到此错误。
cmps272 / strcpy1.c:6:26:错误:预期')'在'char'标记之前 SYSCALL_DEFINE2(strcpy1,char * dest,char * src)
我尝试更改此内容但它一直给我这个错误并停止编译。有什么想法吗?
答案 0 :(得分:6)
你的原始代码(在编辑之前)在参数类型和参数名称之间缺少逗号(根据SYSCALL_DEFINE2
定义需要)。
SYSCALL_DEFINE2(strcpy1, char *, dest, char *, src)
{
...
}
修改强>
修复了缺少逗号的问题后,您仍然会错过#include <linux/syscalls.h>
。它非常重要,因为它包含SYSCALL_DEFINE2()
宏定义。请加入。