Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 自定义linux内核系统调用包装函数_C_Linux_Kernel_System Calls - Fatal编程技术网

C 自定义linux内核系统调用包装函数

C 自定义linux内核系统调用包装函数,c,linux,kernel,system-calls,C,Linux,Kernel,System Calls,我正在为linux内核编写一个自定义系统调用 函数调用一切正常,现在我正在尝试 创建包装函数,以便在任何程序中正常使用该函数 不使用系统调用(调用) 到目前为止,我所做的是 #include <stdlib.h> #include<stdio.h> #include<linux/unistd.h> #include<errno.h> #include <sys/types.h> #include <unistd.h> #in

我正在为linux内核编写一个自定义系统调用 函数调用一切正常,现在我正在尝试 创建包装函数,以便在任何程序中正常使用该函数 不使用系统调用(调用)

到目前为止,我所做的是

#include <stdlib.h>
#include<stdio.h>
#include<linux/unistd.h>
#include<errno.h>
#include <sys/types.h>
#include <unistd.h>
#include<string.h>
#include <linux/sched.h>
#include <linux/kernel.h>

long *__wrap_process_info(int myid , void *udata)
{
    return syscall(337 , myid , udata);
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
长*换行\流程\信息(int myid,void*udata)
{
返回系统调用(337,myid,udata);
}
我的系统调用错误时返回-1,正确执行时返回0 我的问题是,如何使包装函数返回syscall返回值?
而且,我是否需要在包装函数中包含main?

假设您使用的是
*
作为通配符,而不是指针表示法。您的实现已经返回了函数
syscall
返回的值。如果出现错误,其代码将存储在
errno
变量中,您可能希望将该变量复制到将传递给函数的其他参数:

long <???>__wrap_process_info(int myid , void *udata, long *err )
{
    long result;
    result = syscall(337 , myid , udata);
    *err = errno;
    return result;
}
long\uuu wrap\u进程信息(int myid、void*udata、long*err)
{
长期结果;
结果=系统调用(337,myid,udata);
*err=errno;
返回结果;
}