从C用户空间应用程序加载内核模块

时间:2013-04-25 22:04:49

标签: c module linux-kernel kernel userland

我正在尝试使用kmod从C加载内核模块,但它根本不起作用。 这就是我所拥有的:

#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <stdlib.h>

#include <libkmod.h>

int main(int argc, char **argv){

    struct kmod_ctx *ctx;
    struct kmod_module *mod;
    const char *null_config = NULL;
    int err;

    ctx = kmod_new(NULL, &null_config);
    if(ctx == NULL)
        exit(EXIT_FAILURE);

    err = kmod_module_new_from_path(ctx, "./my_module.ko", &mod); // <-- module is in same dir as this binary
    if(err != 0)
        printf("Error creating module from path\n");

    err = kmod_module_insert_module(mod, 0, NULL);
    if(err != 0)
        printf("Error inserting module\n");
    kmod_unref(ctx);

}

我得到两个printfs,所以kmod无法从路径创建模块,但为什么呢?

PS:我以root身份运行二进制文件,来自与模块相同的目录。

0 个答案:

没有答案