Create two macros:
VISIBLE_IF_KUNIT - A macro that sets symbols to be static if CONFIG_KUNIT
is not enabled. Otherwise if CONFIG_KUNIT is enabled there is no change to
the symbol definition.
EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is enabled. Must
use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) in test file in order to
use symbols.
Signed-off-by: Rae Moar <rmoar@google.com>
Reviewed-by: John Johansen <john.johansen@canonical.com>
Reviewed-by: David Gow <davidgow@google.com>
---
Changes since v1:
- Separated the documentation comments for macros.
- Changed copyright date and author for new header file.
include/kunit/visibility.h | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 include/kunit/visibility.h
diff --git a/include/kunit/visibility.h b/include/kunit/visibility.h
new file mode 100644
index 000000000000..0dfe35feeec6
--- /dev/null
+++ b/include/kunit/visibility.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * KUnit API to allow symbols to be conditionally visible during KUnit
+ * testing
+ *
+ * Copyright (C) 2022, Google LLC.
+ * Author: Rae Moar <rmoar@google.com>
+ */
+
+#ifndef _KUNIT_VISIBILITY_H
+#define _KUNIT_VISIBILITY_H
+
+#if IS_ENABLED(CONFIG_KUNIT)
+ /**
+ * VISIBLE_IF_KUNIT - A macro that sets symbols to be static if
+ * CONFIG_KUNIT is not enabled. Otherwise if CONFIG_KUNIT is enabled
+ * there is no change to the symbol definition.
+ */
+ #define VISIBLE_IF_KUNIT
+ /**
+ * EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
+ * EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is
+ * enabled. Must use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING)
+ * in test file in order to use symbols.
+ */
+ #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, \
+ EXPORTED_FOR_KUNIT_TESTING)
+#else
+ #define VISIBLE_IF_KUNIT static
+ #define EXPORT_SYMBOL_IF_KUNIT(symbol)
+#endif
+
+#endif /* _KUNIT_VISIBILITY_H */
--
2.39.0.rc0.267.gcb52ba06e7-goog
On Tue, Dec 6, 2022 at 5:51 AM Rae Moar <rmoar@google.com> wrote: > > Create two macros: > > VISIBLE_IF_KUNIT - A macro that sets symbols to be static if CONFIG_KUNIT > is not enabled. Otherwise if CONFIG_KUNIT is enabled there is no change to > the symbol definition. > > EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into > EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is enabled. Must > use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) in test file in order to > use symbols. > > Signed-off-by: Rae Moar <rmoar@google.com> > Reviewed-by: John Johansen <john.johansen@canonical.com> > Reviewed-by: David Gow <davidgow@google.com> > --- > > Changes since v1: > - Separated the documentation comments for macros. > - Changed copyright date and author for new header file. > This still looks good to me, thanks! Reviewed-by: David Gow <davidgow@google.com> Cheers, -- David > include/kunit/visibility.h | 33 +++++++++++++++++++++++++++++++++ > 1 file changed, 33 insertions(+) > create mode 100644 include/kunit/visibility.h > > diff --git a/include/kunit/visibility.h b/include/kunit/visibility.h > new file mode 100644 > index 000000000000..0dfe35feeec6 > --- /dev/null > +++ b/include/kunit/visibility.h > @@ -0,0 +1,33 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * KUnit API to allow symbols to be conditionally visible during KUnit > + * testing > + * > + * Copyright (C) 2022, Google LLC. > + * Author: Rae Moar <rmoar@google.com> > + */ > + > +#ifndef _KUNIT_VISIBILITY_H > +#define _KUNIT_VISIBILITY_H > + > +#if IS_ENABLED(CONFIG_KUNIT) > + /** > + * VISIBLE_IF_KUNIT - A macro that sets symbols to be static if > + * CONFIG_KUNIT is not enabled. Otherwise if CONFIG_KUNIT is enabled > + * there is no change to the symbol definition. > + */ > + #define VISIBLE_IF_KUNIT > + /** > + * EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into > + * EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is > + * enabled. Must use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) > + * in test file in order to use symbols. > + */ > + #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, \ > + EXPORTED_FOR_KUNIT_TESTING) > +#else > + #define VISIBLE_IF_KUNIT static > + #define EXPORT_SYMBOL_IF_KUNIT(symbol) > +#endif > + > +#endif /* _KUNIT_VISIBILITY_H */ > -- > 2.39.0.rc0.267.gcb52ba06e7-goog >
On 12/6/22 01:40, David Gow wrote: > On Tue, Dec 6, 2022 at 5:51 AM Rae Moar <rmoar@google.com> wrote: >> >> Create two macros: >> >> VISIBLE_IF_KUNIT - A macro that sets symbols to be static if CONFIG_KUNIT >> is not enabled. Otherwise if CONFIG_KUNIT is enabled there is no change to >> the symbol definition. >> >> EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into >> EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is enabled. Must >> use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) in test file in order to >> use symbols. >> >> Signed-off-by: Rae Moar <rmoar@google.com> >> Reviewed-by: John Johansen <john.johansen@canonical.com> >> Reviewed-by: David Gow <davidgow@google.com> >> --- >> >> Changes since v1: >> - Separated the documentation comments for macros. >> - Changed copyright date and author for new header file. >> > > This still looks good to me, thanks! > > Reviewed-by: David Gow <davidgow@google.com> yep, and you already have my Reviewed-by for this one > > Cheers, > -- David > > >> include/kunit/visibility.h | 33 +++++++++++++++++++++++++++++++++ >> 1 file changed, 33 insertions(+) >> create mode 100644 include/kunit/visibility.h >> >> diff --git a/include/kunit/visibility.h b/include/kunit/visibility.h >> new file mode 100644 >> index 000000000000..0dfe35feeec6 >> --- /dev/null >> +++ b/include/kunit/visibility.h >> @@ -0,0 +1,33 @@ >> +/* SPDX-License-Identifier: GPL-2.0 */ >> +/* >> + * KUnit API to allow symbols to be conditionally visible during KUnit >> + * testing >> + * >> + * Copyright (C) 2022, Google LLC. >> + * Author: Rae Moar <rmoar@google.com> >> + */ >> + >> +#ifndef _KUNIT_VISIBILITY_H >> +#define _KUNIT_VISIBILITY_H >> + >> +#if IS_ENABLED(CONFIG_KUNIT) >> + /** >> + * VISIBLE_IF_KUNIT - A macro that sets symbols to be static if >> + * CONFIG_KUNIT is not enabled. Otherwise if CONFIG_KUNIT is enabled >> + * there is no change to the symbol definition. >> + */ >> + #define VISIBLE_IF_KUNIT >> + /** >> + * EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into >> + * EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is >> + * enabled. Must use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) >> + * in test file in order to use symbols. >> + */ >> + #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, \ >> + EXPORTED_FOR_KUNIT_TESTING) >> +#else >> + #define VISIBLE_IF_KUNIT static >> + #define EXPORT_SYMBOL_IF_KUNIT(symbol) >> +#endif >> + >> +#endif /* _KUNIT_VISIBILITY_H */ >> -- >> 2.39.0.rc0.267.gcb52ba06e7-goog >>
© 2016 - 2025 Red Hat, Inc.