自定义linux内核的系统调用包装函数
我正在写一个自定义的系统调用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如果正确执行我的问题是,如何使包装函数返回系统调用返回值? 而且,我是否需要在包装函数中包含main?
假设你使用*
作为通配符而不是指针表示法。 你的实现已经返回函数syscall
返回的值。 如果出现错误,代码将存储在errno
变量中,您可能需要将其复制到将传递给函数的其他参数中:
long <???>__wrap_process_info(int myid , void *udata, long *err )
{
long result;
result = syscall(337 , myid , udata);
*err = errno;
return result;
}
链接地址: http://www.djcxy.com/p/90877.html