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)