export_symbol和EXPORT_SYMBOL_GPL都是用来将一个符号(函数、变量)暴露给其他模块使用的宏,但有一些区别:
export_symbol:这个宏将符号标记为可供其他模块使用,但不强制要求其他模块使用GPL许可证。这意味着即使在非GPL模块中也可以使用这些符号。这种方式更加灵活,但也可能导致一些许可证方面的问题。
EXPORT_SYMBOL_GPL:这个宏将符号标记为只能在GPL许可证下的模块中使用。这意味着只有在遵循GPL许可证的模块中才能使用这些符号,从而保护开发者的代码不被一些商业软件所使用。这种方式更加严格,但也限制了符号的使用范围。
总的来说,如果开发者希望提供给其他模块更广泛的使用权限,可以使用export_symbol;如果希望保护自己的代码不被商业软件使用,可以使用EXPORT_SYMBOL_GPL。