我正在为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);
}
我的系统调用在错误时返回-1,如果正确执行则返回0 我的问题是,如何使包装函数返回syscall返回值? 并且,我是否需要在包装函数中包含main?
答案 0 :(得分:0)
假设您使用*
作为通配符而不是指针表示法。您的实现已经返回函数syscall
返回的值。如果出现错误,它的代码存储在errno
变量中,您可能希望将其复制到您将传递给函数的其他参数中:
long <???>__wrap_process_info(int myid , void *udata, long *err )
{
long result;
result = syscall(337 , myid , udata);
*err = errno;
return result;
}