Linux内核代码中的导出符号GPL是什么?

Linux内核代码中的导出符号GPL是什么?,linux,macros,linux-kernel,kernel,kernel-module,Linux,Macros,Linux Kernel,Kernel,Kernel Module,Linux内核代码中的导出符号GPL是什么 下面是一段代码,其中包含EXPORT\u SYMBOL\u GPL 62 struct resource *platform_get_resource(struct platform_device *dev, 63 unsigned int type, unsigned int num) 64 { 65 int i; 66 67 f

Linux内核代码中的导出符号GPL是什么

下面是一段代码,其中包含EXPORT\u SYMBOL\u GPL

62 struct resource *platform_get_resource(struct platform_device *dev,
 63                                        unsigned int type, unsigned int num)
 64 {
 65         int i;
 66 
 67         for (i = 0; i < dev->num_resources; i++) {
 68                 struct resource *r = &dev->resource[i];
 69 
 70                 if (type == resource_type(r) && num-- == 0)
 71                         return r;
 72         }
 73         return NULL;
 74 }
 75 EXPORT_SYMBOL_GPL(platform_get_resource);
62结构资源*平台获取资源(结构平台设备*开发、,
63无符号整数类型,无符号整数数量)
64 {
65国际一级;
66
67用于(i=0;inum\u资源;i++){
68结构资源*r=&dev->resource[i];
69
70如果(类型==资源类型(r)和数量--==0)
71返回r;
72         }
73返回空;
74 }
75导出符号GPL(平台获取资源);

该宏在内核代码中多次出现…

将某些符号(例如函数)定义为可导出(从内核可加载模块中看到)是一个宏。如果符号没有“导出符号”,则无法从模块访问该符号

EXPORT\u SYMBOL\u GPL
将仅在GPL许可的模块中显示符号,而
EXPORT\u SYMBOL
将在具有任何许可的模块中显示符号

-关于出口商品GPL的价值(2005年,corbet)

插入可加载模块时,它对内核函数和数据结构的任何引用都必须链接到当前运行的内核。然而,模块加载器不提供对所有内核符号的访问;只有那些已显式导出的文件才可用

出口有两种口味:香草(出口标志)和GPL(仅出口标志)。前者可用于任何内核模块,而后者不能用于任何不携带GPL兼容许可证的模块