自定义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

上一篇: Custom linux kernel syscall wrapper function

下一篇: Linux: do syscalls change?