首页 > 解决方案 > Linux 内核模块中 GPL *find_symbol* 方法的替代方案

问题描述

我有一个专有的Linux模块,它可能在包含函数foo的第二个专有模块之前或之后加载。

我希望我的第一个模块在动态配置时查找第二个模块符号foo,如果找到则调用它。

一般的想法(松散的语法)是这样的:

/* check if the module/symbol can be found */    
module, foo_cb = lookup_for_a_symbol("foo");

if (foo_cb && module) {
    /* increment the refcnt to make sure the module will not be unloaded */
    module_try_get(module);

    foo_cb(my_params);

    /* release the module */ 
    module_put(module);
}

我在 module.c 中找到了一个名为find_symbol的函数,但它是 GPL。

动态符号查找的任何非 GPL 替代方案?

谢谢。

标签: clinuxlinux-kernelkernel-module

解决方案


抱歉,我知道这是一个比较老的问题,但我最近有同样的需求,我使用了一个非常明显的解决方案,没有创建这里没有人提到的 GPL 帮助模块,所以我认为值得一提。

scnprintf是非 GPL,它支持%pf%pF格式化您需要的符号解析。查看printk 格式


推荐阅读