Followup to: <[EMAIL PROTECTED]> By author: Adrian Bunk <[EMAIL PROTECTED]> In newsgroup: linux.dev.kernel > > On Mon, Sep 05, 2005 at 02:47:40PM -0400, Jakub Jelinek wrote: > > On Mon, Sep 05, 2005 at 08:00:05PM +0200, Adrian Bunk wrote: > > > It isn't the same, but "static inline" is the correct variant. > > > > > > "extern inline __attribute__((always_inline))" (which is what > > > "extern inline" is expanded to) doesn't make sense. > > > > It does make sense and is different from > > static inline __attribute__((always_inline)). > > Try: > > static inline __attribute__((always_inline)) void foo (void) {} > > void (*fn)(void) = foo; > > vs. > > extern inline __attribute__((always_inline)) void foo (void) {} > > void (*fn)(void) = foo; > > In the former case, GCC will emit the out of line static copy of foo > > if you take its address, in the latter case either you provide foo > > function by other means, or you get linker error. > > And we need the former case because in the kernel we do not have > out-of-line variants of the inline functions. >
UNLESS the function is broken if out-of-lined. If the function cannot be safely out-of-lined, extern inline MUST be used. -hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/