C 如何将用户定义的系统调用作为函数调用

C 如何将用户定义的系统调用作为函数调用,c,kernel,system-calls,openbsd,C,Kernel,System Calls,Openbsd,假设我有一个用户定义的系统调用:foo(代码为500) 要调用它,我只需在C文件中编写: syscall(SYS_code, args); 我怎么能只用foo(args)?你不能。除非您首先让内核开发人员相信您的系统调用值得添加,然后添加它,然后用户空间库(如标准C库(大多数Linux发行版上的glibc))决定为它实现一个包装器,就像大多数系统调用一样 换言之:由于上述操作是不可能的,所以您所能做的就是在自己的程序中自己定义包装器函数 #定义SYS\u foo 500 长foo(int a,

假设我有一个用户定义的系统调用:foo(代码为500)

要调用它,我只需在C文件中编写:

syscall(SYS_code, args);

我怎么能只用
foo(args)
?你不能。除非您首先让内核开发人员相信您的系统调用值得添加,然后添加它,然后用户空间库(如标准C库(大多数Linux发行版上的glibc))决定为它实现一个包装器,就像大多数系统调用一样

换言之:由于上述操作是不可能的,所以您所能做的就是在自己的程序中自己定义包装器函数

#定义SYS\u foo 500
长foo(int a,char*b){
返回syscall(SYS\u foo,a,b);
}

“如何仅使用foo(args)调用它?”-创建一个函数
foo
,该函数执行所需的系统调用。所以其他代码可以简单地调用
foo