Hi, I am writing a device driver. I have a questions to ask: a) inline functions in .c file --> Will it be correct to have inline function declared in .c file? I am speaking with respect to device driver meant for the linux kernel. I have a function, which is quite short in terms of function body and it is exported from one module to another. Do you think, I can declare it as an inline in the .c file or I need to move this function declaration along with the EXPORT_SYMBOL line to a .h file just because it is inlined? For ex -> something like this? inline void hello_world( ) {............ return; } EXPORT_SYMBOL(hello_world);
On 01 Mar 2014 10:04:23 +0000, "Summi" said:
a) inline functions in .c file --> Will it be correct to have inline function declared in .c file? I am speaking with respect to device driver meant for the linux kernel. I have a function, which is quite short in terms of function body and it is exported from one module to another.
If a function is truly inlined, what address is used to be exported? (Though gcc stops you from that idiocy - if you take the address of the function, gcc will emit a non-inlined version whether you like it or not. Of course, external references to that function will involve a function call and not be inlined.) Most of the kernel sticks a 'static inline' in a .h file that's included in every .c that needs it, and doesn't bother with the EXPORT_SYMBOL.
participants (2)
-
Summi -
Valdis.Kletnieks@vt.edu