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

问题描述

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

调用它,我只需编写一个C文件

syscall(SYS_code,args);

如何仅使用foo(args)调用它?

解决方法

您不能。除非您先让内核开发人员确信您的系统调用值得添加,然后添加它,然后用户空间库(例如标准C库(在大多数Linux发行版中为glibc))决定像为大多数应用程序那样为它实现包装,否则您不会这样做的系统调用。

换句话说:由于上述操作是不可能的,因此您所要做的就是在自己的程序中自己定义包装函数。

#define SYS_foo 500

long foo(int a,char *b) {
    return syscall(SYS_foo,a,b);
}