On Thu, Dec 05, 2024 at 12:21:26PM +0100, Uwe Kleine-König wrote: > Hello Andy, > > On Thu, Dec 05, 2024 at 09:52:13AM +0200, Andy Shevchenko wrote: > > On Wed, Dec 04, 2024 at 11:01:11AM +0100, Uwe Kleine-König wrote: > > > The definition of EXPORT_SYMBOL et al depends on > > > DEFAULT_SYMBOL_NAMESPACE. So DEFAULT_SYMBOL_NAMESPACE must already be > > > available when <linux/export.h> is parsed. > > > > > -within the corresponding compilation unit before any EXPORT_SYMBOL macro is > > > -used. > > > +within the corresponding compilation unit before the #include for > > > +<linux/export.h>. > > > > And how do I know where it is included in the current state of affairs with the > > dependency hell in the kernel? > > > > I suggest to reword it to something like "before any global inclusions", the > > best probably is to repeat the piece from pr_fmt() / dev_fmt() documentation > > (if any). > > Well, "before <linux/export.h>" is the accurate thing you have to > ensure. "before any global inclusion" is the safe and easy thing to do > to achieve that. Maybe: > > ... > within the corresponding compilation unit before the #include for > <linux/export.h>. Typically it's placed before the first > #include. The below is excerpt for pr_fmt(): ---8>---- Besides being more concise than the equivalent printk() calls, they can use a common definition for the format string through the pr_fmt() macro. For instance, defining this at the top of a source file (before any ``#include`` directive):: #define pr_fmt(fmt) "%s:%s: " fmt, KBUILD_MODNAME, __func__ ---8>---- > ? -- With Best Regards, Andy Shevchenko