19 #ifndef _COBALT_KERNEL_ASSERT_H
20 #define _COBALT_KERNEL_ASSERT_H
22 #include <linux/kconfig.h>
23 #include <cobalt/kernel/trace.h>
24 #include <cobalt/kernel/ancillaries.h>
26 #define XENO_INFO KERN_INFO "[Xenomai] "
27 #define XENO_WARNING KERN_WARNING "[Xenomai] "
28 #define XENO_ERR KERN_ERR "[Xenomai] "
30 #define XENO_DEBUG(__subsys) \
31 IS_ENABLED(CONFIG_XENO_OPT_DEBUG_##__subsys)
32 #define XENO_ASSERT(__subsys, __cond) \
33 (!WARN_ON(XENO_DEBUG(__subsys) && !(__cond)))
34 #define XENO_BUG(__subsys) \
35 BUG_ON(XENO_DEBUG(__subsys))
36 #define XENO_BUG_ON(__subsys, __cond) \
37 BUG_ON(XENO_DEBUG(__subsys) && (__cond))
38 #define XENO_WARN(__subsys, __cond, __fmt...) \
39 WARN(XENO_DEBUG(__subsys) && (__cond), __fmt)
40 #define XENO_WARN_ON(__subsys, __cond) \
41 WARN_ON(XENO_DEBUG(__subsys) && (__cond))
42 #define XENO_WARN_ON_ONCE(__subsys, __cond) \
43 WARN_ON_ONCE(XENO_DEBUG(__subsys) && (__cond))
45 #define XENO_BUG_ON_SMP(__subsys, __cond) \
46 XENO_BUG_ON(__subsys, __cond)
47 #define XENO_WARN_ON_SMP(__subsys, __cond) \
48 XENO_WARN_ON(__subsys, __cond)
49 #define XENO_WARN_ON_ONCE_SMP(__subsys, __cond) \
50 XENO_WARN_ON_ONCE(__subsys, __cond)
52 #define XENO_BUG_ON_SMP(__subsys, __cond) \
54 #define XENO_WARN_ON_SMP(__subsys, __cond) \
56 #define XENO_WARN_ON_ONCE_SMP(__subsys, __cond) \
60 #define primary_mode_only() XENO_BUG_ON(CONTEXT, ipipe_root_p)
61 #define secondary_mode_only() XENO_BUG_ON(CONTEXT, !ipipe_root_p)
62 #define interrupt_only() XENO_BUG_ON(CONTEXT, !xnsched_interrupt_p())
63 #define realtime_cpu_only() XENO_BUG_ON(CONTEXT, !xnsched_supported_cpu(ipipe_processor_id()))
64 #define thread_only() XENO_BUG_ON(CONTEXT, xnsched_interrupt_p())
65 #define irqoff_only() XENO_BUG_ON(CONTEXT, hard_irqs_disabled() == 0)
66 #ifdef CONFIG_XENO_OPT_DEBUG_LOCKING
67 #define atomic_only() XENO_BUG_ON(CONTEXT, (xnlock_is_owner(&nklock) && hard_irqs_disabled()) == 0)
68 #define preemptible_only() XENO_BUG_ON(CONTEXT, xnlock_is_owner(&nklock) || hard_irqs_disabled())
70 #define atomic_only() XENO_BUG_ON(CONTEXT, hard_irqs_disabled() == 0)
71 #define preemptible_only() XENO_BUG_ON(CONTEXT, hard_irqs_disabled() != 0)