C 如何将用户定义的系统调用作为函数调用
假设我有一个用户定义的系统调用:foo(代码为500) 要调用它,我只需在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,
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
。