~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/kunit/of.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef _KUNIT_OF_H
  3 #define _KUNIT_OF_H
  4 
  5 #include <kunit/test.h>
  6 
  7 struct device_node;
  8 
  9 #ifdef CONFIG_OF
 10 
 11 void of_node_put_kunit(struct kunit *test, struct device_node *node);
 12 
 13 #else
 14 
 15 static inline
 16 void of_node_put_kunit(struct kunit *test, struct device_node *node)
 17 {
 18         kunit_skip(test, "requires CONFIG_OF");
 19 }
 20 
 21 #endif /* !CONFIG_OF */
 22 
 23 #if defined(CONFIG_OF) && defined(CONFIG_OF_OVERLAY) && defined(CONFIG_OF_EARLY_FLATTREE)
 24 
 25 int of_overlay_fdt_apply_kunit(struct kunit *test, void *overlay_fdt,
 26                                u32 overlay_fdt_size, int *ovcs_id);
 27 #else
 28 
 29 static inline int
 30 of_overlay_fdt_apply_kunit(struct kunit *test, void *overlay_fdt,
 31                            u32 overlay_fdt_size, int *ovcs_id)
 32 {
 33         kunit_skip(test, "requires CONFIG_OF and CONFIG_OF_OVERLAY and CONFIG_OF_EARLY_FLATTREE for root node");
 34         return -EINVAL;
 35 }
 36 
 37 #endif
 38 
 39 /**
 40  * __of_overlay_apply_kunit() - Test managed of_overlay_fdt_apply() variant
 41  * @test: test context
 42  * @overlay_begin: start address of overlay to apply
 43  * @overlay_end: end address of overlay to apply
 44  *
 45  * This is mostly internal API. See of_overlay_apply_kunit() for the wrapper
 46  * that makes this easier to use.
 47  *
 48  * Similar to of_overlay_fdt_apply(), except the overlay is managed by the test
 49  * case and is automatically removed with of_overlay_remove() after the test
 50  * case concludes.
 51  *
 52  * Return: 0 on success, negative errno on failure
 53  */
 54 static inline int __of_overlay_apply_kunit(struct kunit *test,
 55                                            u8 *overlay_begin,
 56                                            const u8 *overlay_end)
 57 {
 58         int unused;
 59 
 60         return of_overlay_fdt_apply_kunit(test, overlay_begin,
 61                                           overlay_end - overlay_begin,
 62                                           &unused);
 63 }
 64 
 65 /**
 66  * of_overlay_apply_kunit() - Test managed of_overlay_fdt_apply() for built-in overlays
 67  * @test: test context
 68  * @overlay_name: name of overlay to apply
 69  *
 70  * This macro is used to apply a device tree overlay built with the
 71  * cmd_dt_S_dtbo rule in scripts/Makefile.lib that has been compiled into the
 72  * kernel image or KUnit test module. The overlay is automatically removed when
 73  * the test is finished.
 74  *
 75  * Unit tests that need device tree nodes should compile an overlay file with
 76  * @overlay_name\.dtbo.o in their Makefile along with their unit test and then
 77  * load the overlay during their test. The @overlay_name matches the filename
 78  * of the overlay without the dtbo filename extension. If CONFIG_OF_OVERLAY is
 79  * not enabled, the @test will be skipped.
 80  *
 81  * In the Makefile
 82  *
 83  * .. code-block:: none
 84  *
 85  *      obj-$(CONFIG_OF_OVERLAY_KUNIT_TEST) += overlay_test.o kunit_overlay_test.dtbo.o
 86  *
 87  * In the test
 88  *
 89  * .. code-block:: c
 90  *
 91  *      static void of_overlay_kunit_of_overlay_apply(struct kunit *test)
 92  *      {
 93  *              struct device_node *np;
 94  *
 95  *              KUNIT_ASSERT_EQ(test, 0,
 96  *                              of_overlay_apply_kunit(test, kunit_overlay_test));
 97  *
 98  *              np = of_find_node_by_name(NULL, "test-kunit");
 99  *              KUNIT_EXPECT_NOT_ERR_OR_NULL(test, np);
100  *              of_node_put(np);
101  *      }
102  *
103  * Return: 0 on success, negative errno on failure.
104  */
105 #define of_overlay_apply_kunit(test, overlay_name)              \
106 ({                                                              \
107         extern uint8_t __dtbo_##overlay_name##_begin[];         \
108         extern uint8_t __dtbo_##overlay_name##_end[];           \
109                                                                 \
110         __of_overlay_apply_kunit((test),                        \
111                         __dtbo_##overlay_name##_begin,          \
112                         __dtbo_##overlay_name##_end);           \
113 })
114 
115 #endif
116 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php