美文网首页
Linux内核符号表导出

Linux内核符号表导出

作者: 二进制人类 | 来源:发表于2022-11-01 10:43 被阅读0次

    解决驱动的依赖问题:如果当前驱动中需要使用到其它驱动中所定义的函数或者变量,则需要将被依赖驱动中的函数和变量进行符号导出,在当前驱动中可以去访问导出的符号。

    EXPORT_SYMBOL(符号);  # 符号可以是函数,和变量名称;
    EXPORT_SYMBOL_GPL(符号);
    

    注意:

    在使用的时候,按照依赖顺序加载驱动程序,卸载的时候按照逆序卸载。

    模块一

    #include <linux/kernel.h>
    #include <linux/init.h>
    #include <linux/module.h>
    
    /* 符号导出:导出的符号可以在其它模块中去引用 */
    
    void test_func(void)
    {
        printk(KERN_INFO "my test func\n");
    }
    
    MODULE_LICENSE("GPL");
    EXPORT_SYMBOL(test_func);   
    EXPORT_SYMBOL_GPL(kprobe_decode_arm_table)
    

    模块二

    #include <linux/kernel.h>
    #include <linux/init.h>
    #include <linux/module.h>
    
    MODULE_LICENSE("GPL");
    
    extern void test_func(void);
    
    /* 定义模块加载函数 */
    static int __init my_module_init(void)
    {
        /* 输出:KERN_INFO(正常运行输出) */
        printk(KERN_INFO "my module init\n");
        test_func();
        return 0;
    }
    /* 定义模块卸载函数 */
    static void __exit my_module_exit(void)
    {
        printk(KERN_INFO "my module exit\n");
    }
    /* 声明模块的加载入口 */
    module_init(my_module_init);
    /* 声明模块的卸载入口 */
    module_exit(my_module_exit);
    

    相关文章

      网友评论

          本文标题:Linux内核符号表导出

          本文链接:https://www.haomeiwen.com/subject/kdlzzrtx.html