On Tue, Jul 14, 2026 at 06:08:12PM -0700, Jonathan Cameron wrote:
> On Mon, 13 Jul 2026 10:52:56 +0100
> Rodrigo Alencar <[email protected]> wrote:
> > On 12/07/26 02:09, Jonathan Cameron wrote:
> > > On Tue, 07 Jul 2026 15:04:28 +0100
> > > Rodrigo Alencar via B4 Relay
> > > <[email protected]> wrote:
...
> > > > Because __iio_chan_prefix_emit() is static, the test translation unit
> > > > is pulled into industrialio-core.c.
KUnit also has static/non-static automation via a macro (defined in the
kunit/visibility.h) and I see that's used in the below example.
> > > Isn't there some magic route cases like this that makes it non static
> > > only when self tests are enabled?
> > > Claude tells me to look at include/kunit/visibility.h
> >
> > There is, Although I think that using
> >
> > #if IS_ENABLED(CONFIG_IIO_CHANNEL_PREFIX_KUNIT_TEST)
> > #include "test/iio-test-channel-prefix.c"
> > #endif
> >
> > was more straight forward, less invasive and easier to change than..
Maybe, but thanks to this thread, I fixed other modules that use their own
approach to use the standard KUnit infra for this (as below).
> > /* In "drivers/iio/industrialio-core.c" */
> >
> > #include <kunit/visibility.h>
> > ...
> > VISIBLE_IF_KUNIT ssize_t __iio_chan_prefix_emit(...)
> > {
> > ...
> > }
> > EXPORT_SYMBOL_IF_KUNIT(__iio_chan_prefix_emit);
> >
> > /* In "iio_core.h" */
> >
> > #if IS_ENABLED(CONFIG_KUNIT)
> > ssize_t __iio_chan_prefix_emit(...);
> > #endif
> >
> > /* In "drivers/iio/test/iio-test-channel-prefix.c" */
> >
> > #include <kunit/visibility.h>
> > #include <iio_core.h>
> > ...
> > MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING");
> > ...
> > // Use __iio_chan_prefix_emit() in tests
>
> I'd rather this wasn't built into the core module. So prefer you jump
> though those hoops.
Hmm... The above (while being verbose) is the standard way of how we export
symbols for KUnit tests. Do you have a better alternative that everyone can
use? (Not only IIO subsystem.)
--
With Best Regards,
Andy Shevchenko