【发布时间】:2014-03-01 20:39:17
【问题描述】:
我正在编写设备驱动程序。我有一个问题要问:
在 .c 文件中声明内联函数是否正确?
我说的是用于 linux 内核的设备驱动程序。我有一个函数,它的函数体很短,它从一个模块导出到另一个模块。你认为,我可以在 .c 文件中将其声明为内联,或者我需要将此函数声明与 EXPORT_SYMBOL 行一起移动到 .h 文件中,因为它是内联的?什么是标准的 Linux 内核实践?
For ex -> something like this?
inline void hello_world( )
{............
return;
}
EXPORT_SYMBOL(hello_world);
谢谢!
【问题讨论】:
-
更多的是编码约定问题。询问kernelnewbies.org。您的代码将导出 非内联 函数。
-
在设备驱动程序编程的情况下,如果你有一个/许多函数会被多个模块调用或使用,那么你可以做的就是创建一个“.c”文件并导出所有使用 EXPORT_SYMBOL_GPL 向内核传递函数。然后这些导出的函数被识别为“内核符号”。在使用或调用这些导出函数时,您不需要包含任何文件,也不需要定义它们的原型。只需导出它,然后从任何其他模块调用它。但请确保您出口的“许可证”。
标签: c linux linux-kernel linux-device-driver