On Thu, Nov 07, 2019 at 06:43:11PM -0800, Brendan Higgins wrote: > On Thu, Oct 17, 2019 at 11:09 AM Alan Maguire <alan.maguire@xxxxxxxxxx> wrote: > > > > Making kunit itself buildable as a module allows for "always-on" > > kunit configuration; specifying CONFIG_KUNIT=m means the module > > is built but only used when loaded. Kunit test modules will load > > kunit.ko as an implicit dependency, so simply running > > "modprobe my-kunit-tests" will load the tests along with the kunit > > module and run them. > > > > Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx> > > Signed-off-by: Knut Omang <knut.omang@xxxxxxxxxx> > > --- > > lib/kunit/Kconfig | 2 +- > > lib/kunit/Makefile | 4 +++- > > lib/kunit/test.c | 2 ++ > > lib/kunit/try-catch.c | 3 +++ > > 4 files changed, 9 insertions(+), 2 deletions(-) > > > > diff --git a/lib/kunit/Kconfig b/lib/kunit/Kconfig > > index 9ebd5e6..065aa16 100644 > > --- a/lib/kunit/Kconfig > > +++ b/lib/kunit/Kconfig > > @@ -3,7 +3,7 @@ > > # > > > > menuconfig KUNIT > > - bool "KUnit - Enable support for unit tests" > > + tristate "KUnit - Enable support for unit tests" > > help > > Enables support for kernel unit tests (KUnit), a lightweight unit > > testing and mocking framework for the Linux kernel. These tests are > > diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile > > index 769d940..8e2635a 100644 > > --- a/lib/kunit/Makefile > > +++ b/lib/kunit/Makefile > > @@ -1,4 +1,6 @@ > > -obj-$(CONFIG_KUNIT) += test.o \ > > +obj-$(CONFIG_KUNIT) += kunit.o > > + > > +kunit-objs += test.o \ > > string-stream.o \ > > assert.o \ > > try-catch.o > > diff --git a/lib/kunit/test.c b/lib/kunit/test.c > > index e8b2443..c0ace36 100644 > > --- a/lib/kunit/test.c > > +++ b/lib/kunit/test.c > > @@ -523,3 +523,5 @@ void *kunit_find_symbol(const char *sym) > > return ERR_PTR(-ENOENT); > > } > > EXPORT_SYMBOL(kunit_find_symbol); > > + > > +MODULE_LICENSE("GPL"); > > diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c > > index 1c1e9af..72fc8ed 100644 > > --- a/lib/kunit/try-catch.c > > +++ b/lib/kunit/try-catch.c > > @@ -31,6 +31,8 @@ static int kunit_generic_run_threadfn_adapter(void *data) > > complete_and_exit(try_catch->try_completion, 0); > > } > > > > +KUNIT_VAR_SYMBOL(sysctl_hung_task_timeout_secs, unsigned long); > > Can you just export sysctl_hung_task_timeout_secs? > > I don't mean to make you redo all this work for one symbol twice, but > I thought we agreed on just exposing this symbol, but in a namespace. > It seemed like a good use case for that namespaced exporting thing > that Luis was talking about. As I understood it, you would have to > export it in the module that defines it, and then use the new > MODULE_IMPORT_NS() macro here. Also, I tried applying this and running this on kselftest/test and got the following build error: In file included from lib/kunit/try-catch.c:10: lib/kunit/try-catch.c: In function ‘kunit_test_timeout’: ./include/kunit/test.h:132:19: error: lvalue required as unary ‘&’ operand kunit_##symbol = &(symbol) ^ lib/kunit/try-catch.c:57:2: note: in expansion of macro ‘KUNIT_INIT_VAR_SYMBOL’ KUNIT_INIT_VAR_SYMBOL(NULL, sysctl_hung_task_timeout_secs); ^~~~~~~~~~~~~~~~~~~~~ > > + > > static unsigned long kunit_test_timeout(void) > > { > > unsigned long timeout_msecs; > > @@ -52,6 +54,7 @@ static unsigned long kunit_test_timeout(void) > > * For more background on this topic, see: > > * https://mike-bland.com/2011/11/01/small-medium-large.html > > */ > > + KUNIT_INIT_VAR_SYMBOL(NULL, sysctl_hung_task_timeout_secs); > > if (sysctl_hung_task_timeout_secs) { > > /* > > * If sysctl_hung_task is active, just set the timeout to some > > -- > > 1.8.3.1 > >