chensong <[email protected]> writes:
> On 2021年02月20日 20:45, Philippe Gerum via Xenomai wrote: >> From: Philippe Gerum <[email protected]> >> >> In order to intimately connect Cobalt to the kernel, Dovetail allows >> us to extend the latter with data and procedures we need: >> >> - we can embed our own context information into a set of critical >> kernel data structures. This information should be defined as a set >> of core-specific types, such as struct oob_thread_state which is >> going to be part of struct thread_info. >> >> - we can define preparation and finalization handlers for out-of-band >> IRQ handling, which Dovetail should invoke right after entering the >> outer interrupt frame, then right before leaving it respectively. >> >> Add the couple of interface headers we need to connect those elements >> to the kernel. >> >> Signed-off-by: Philippe Gerum <[email protected]> >> --- >> kernel/cobalt/include/dovetail/irq.h | 52 ++++++++++++++++++++ >> kernel/cobalt/include/dovetail/thread_info.h | 33 +++++++++++++ >> 2 files changed, 85 insertions(+) >> create mode 100644 kernel/cobalt/include/dovetail/irq.h >> create mode 100644 kernel/cobalt/include/dovetail/thread_info.h >> >> diff --git a/kernel/cobalt/include/dovetail/irq.h >> b/kernel/cobalt/include/dovetail/irq.h >> new file mode 100644 >> index 000000000..66d020fde >> --- /dev/null >> +++ b/kernel/cobalt/include/dovetail/irq.h >> @@ -0,0 +1,52 @@ >> +/* >> + * SPDX-License-Identifier: GPL-2.0 >> + * >> + * Copyright (C) 2017 Philippe Gerum <[email protected]> >> + */ >> + >> +#ifndef _COBALT_DOVETAIL_IRQ_H >> +#define _COBALT_DOVETAIL_IRQ_H >> + >> +#ifdef CONFIG_XENOMAI >> + >> +#include <cobalt/kernel/sched.h> >> + >> +/* hard irqs off. */ >> +static inline void irq_enter_pipeline(void) >> +{ >> + struct xnsched *sched = xnsched_current(); >> + >> + sched->lflags |= XNINIRQ; >> +} >> + >> +/* hard irqs off. */ > > should be "hard irqs on"? > The comment is ok, the interrupt pipeline always calls the exit handler with hard irqs off. -- Philippe.
