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. > > Jakub
Another standards complient way of dealing with extern inline is for every module that requires an address generates its own global copy and the link_once (or COMDAT) facility is used to eliminate all but one. -- Terrence **************************************************** | Terrence C. Miller | Sun Microsystems | | [EMAIL PROTECTED] | M.S. MPK16-303 | | 650-786-9192 | 16 Network Circle | | | Menlo Park, CA 94025 | **************************************************** - 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/