From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 01 Nov 2024 02:11:33 +0000 Subject: [PATCH] add xenomai --- kernel/include/linux/irqflags.h | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/kernel/include/linux/irqflags.h b/kernel/include/linux/irqflags.h index 3ed4e87..051c727 100644 --- a/kernel/include/linux/irqflags.h +++ b/kernel/include/linux/irqflags.h @@ -13,6 +13,7 @@ #define _LINUX_TRACE_IRQFLAGS_H #include <linux/typecheck.h> +#include <asm-generic/irq_pipeline.h> #include <asm/irqflags.h> #include <asm/percpu.h> @@ -52,7 +53,9 @@ extern void trace_hardirqs_on_prepare(void); extern void trace_hardirqs_off_finish(void); extern void trace_hardirqs_on(void); +extern void trace_hardirqs_on_pipelined(void); extern void trace_hardirqs_off(void); +extern void trace_hardirqs_off_pipelined(void); # define lockdep_hardirq_context() (raw_cpu_read(hardirq_context)) # define lockdep_softirq_context(p) ((p)->softirq_context) @@ -122,7 +125,9 @@ # define trace_hardirqs_on_prepare() do { } while (0) # define trace_hardirqs_off_finish() do { } while (0) # define trace_hardirqs_on() do { } while (0) +# define trace_hardirqs_on_pipelined() do { } while (0) # define trace_hardirqs_off() do { } while (0) +# define trace_hardirqs_off_pipelined() do { } while (0) # define lockdep_hardirq_context() 0 # define lockdep_softirq_context(p) 0 # define lockdep_hardirqs_enabled() 0 @@ -228,6 +233,38 @@ #endif /* CONFIG_TRACE_IRQFLAGS */ +#ifdef CONFIG_IRQ_PIPELINE +#define local_irq_enable_full() \ + do { \ + hard_local_irq_enable(); \ + local_irq_enable(); \ + } while (0) + +#define local_irq_disable_full() \ + do { \ + hard_local_irq_disable(); \ + local_irq_disable(); \ + } while (0) + +#define local_irq_save_full(__flags) \ + do { \ + hard_local_irq_disable(); \ + local_irq_save(__flags); \ + } while (0) + +#define local_irq_restore_full(__flags) \ + do { \ + if (!irqs_disabled_flags(__flags)) \ + hard_local_irq_enable(); \ + local_irq_restore(__flags); \ + } while (0) +#else +#define local_irq_enable_full() local_irq_enable() +#define local_irq_disable_full() local_irq_disable() +#define local_irq_save_full(__flags) local_irq_save(__flags) +#define local_irq_restore_full(__flags) local_irq_restore(__flags) +#endif + #define local_save_flags(flags) raw_local_save_flags(flags) /* -- Gitblit v1.6.2