跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Linux中的EXPORT_SYMBOL宏,你真的懂了吗?

文章导读

你是否曾想过,Linux内核中的函数或变量是如何被导出的?EXPORT_SYMBOL宏在Linux内核中扮演着重要的角色。本文将深入浅出地解析EXPORT_SYMBOL宏的原理和使用方法,帮助你更好地理解Linux内核的工作机制。

一、EXPORT_SYMBOL简介

在Linux内核中,模块化设计是一种常见的做法。模块可以在运行时动态加载和卸载。而EXPORT_SYMBOL宏就是用来导出模块中的函数或变量,使其可以被其他模块或用户空间程序使用的。

二、EXPORT_SYMBOL源码详解

// linux-4.10.1/include/linux/export.h
struct kernel_symbol {
    unsigned long value;
    const char *name;
};

/* For every exported symbol, place a struct in the __ksymtab section */
#define ___EXPORT_SYMBOL(sym, sec) \
    extern typeof(sym) sym; \
    __CRC_SYMBOL(sym, sec) \
    static const char __kstrtab_##sym[] \
    __attribute__((section(
                            

相关文章