Re: [PATCH v7 07/17] iio: test: add kunit tests for channel prefix naming generation

Jonathan Cameron <[email protected]>
Newsgroups org.kernel.vger.linux-hardening,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-doc,org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel
Organization Qualcomm
Message-ID <[email protected]>
On Wed, 15 Jul 2026 09:32:15 +0300
Andy Shevchenko <[email protected]> wrote:

> 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.)

Ah. I put that comment in an unhelpful place. I meant the include above not this bit.
Absolutely fine with the exports being there.

Jonathan

>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.