xref: /linux/include/kunit/visibility.h (revision cdd30ebb1b9f36159d66f088b61aee264e649d7a)
19c988faeSRae Moar /* SPDX-License-Identifier: GPL-2.0 */
29c988faeSRae Moar /*
39c988faeSRae Moar  * KUnit API to allow symbols to be conditionally visible during KUnit
49c988faeSRae Moar  * testing
59c988faeSRae Moar  *
69c988faeSRae Moar  * Copyright (C) 2022, Google LLC.
79c988faeSRae Moar  * Author: Rae Moar <rmoar@google.com>
89c988faeSRae Moar  */
99c988faeSRae Moar 
109c988faeSRae Moar #ifndef _KUNIT_VISIBILITY_H
119c988faeSRae Moar #define _KUNIT_VISIBILITY_H
129c988faeSRae Moar 
139c988faeSRae Moar #if IS_ENABLED(CONFIG_KUNIT)
149c988faeSRae Moar     /**
159c988faeSRae Moar      * VISIBLE_IF_KUNIT - A macro that sets symbols to be static if
169c988faeSRae Moar      * CONFIG_KUNIT is not enabled. Otherwise if CONFIG_KUNIT is enabled
179c988faeSRae Moar      * there is no change to the symbol definition.
189c988faeSRae Moar      */
199c988faeSRae Moar     #define VISIBLE_IF_KUNIT
209c988faeSRae Moar     /**
219c988faeSRae Moar      * EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
229c988faeSRae Moar      * EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is
23*cdd30ebbSPeter Zijlstra      * enabled. Must use MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING")
249c988faeSRae Moar      * in test file in order to use symbols.
25a4311c27SMichal Wajdeczko      * @symbol: the symbol identifier to export
269c988faeSRae Moar      */
27*cdd30ebbSPeter Zijlstra     #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, "EXPORTED_FOR_KUNIT_TESTING")
289c988faeSRae Moar #else
299c988faeSRae Moar     #define VISIBLE_IF_KUNIT static
309c988faeSRae Moar     #define EXPORT_SYMBOL_IF_KUNIT(symbol)
319c988faeSRae Moar #endif
329c988faeSRae Moar 
339c988faeSRae Moar #endif /* _KUNIT_VISIBILITY_H */
34