Linux设备驱动程序中的内联函数

时间:2014-03-01 10:09:17

标签: c linux linux-kernel linux-device-driver

我正在写一个设备驱动程序。我有一个问题要问:

在.c文件中声明内联函数是否正确?

我说的是关于linux内核的设备驱动程序。我有一个函数,它在函数体方面非常短,并且从一个模块导出到另一个模块。您是否认为,我可以将其声明为.c文件中的内联,或者我需要将此函数声明与EXPORT_SYMBOL行一起移动到.h文件中,因为它是内联的?什么是标准的Linux内核实践?

For ex -> something like this?
inline void hello_world( )
{............
return;
}
EXPORT_SYMBOL(hello_world);

谢谢!

1 个答案:

答案 0 :(得分:2)

只要您不将函数声明为static,非内联版本将包含在已编译的代码中,即使它已声明为inline,也正是为了启用其他代码编辑单位调用该功能。

显然,除非启用整个程序优化/链接时优化,否则在从编译单元外部调用时,函数调用之间不会有任何优化。