From: Philippe Gerum <rpm@xenomai.org>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-core] [rfc, patch] allow timer interrupt to be shared.
Date: Fri, 18 Aug 2006 16:21:22 +0200 [thread overview]
Message-ID: <1155910883.4326.89.camel@domain.hid> (raw)
In-Reply-To: <17637.50791.966458.220636@domain.hid>
On Fri, 2006-08-18 at 15:53 +0200, Gilles Chanteperdrix wrote:
> Philippe Gerum wrote:
> > On Fri, 2006-08-18 at 14:36 +0200, Philippe Gerum wrote:
> > > On Fri, 2006-08-18 at 13:16 +0200, Gilles Chanteperdrix wrote:
> > > > Philippe Gerum wrote:
> > > > > I'd rather keep the number of obscure conditional macros as low as
> > > > > possible; we should actually try to reduce them since we have a growing
> > > > > number of real and pseudo-archs to support, and those macros tend to
> > > > > obfuscate the generic code.
> > > > >
> > > > > In the same vein, is there anything we could use in the compatible Adeos
> > > > > patch that would unambiguously identify the presence of such support
> > > > > without resorting to yet-another-macro like IPIPE_HAVE_SHARED_TIMER_IRQ?
> > > >
> > > > We could decide that ipipe_timer_irq_p() must be implemented as a macro,
> > > > and use #ifdef ipipe_timer_irq_p but I thought that #ifdef
> > > > IPIPE_HAVE_SHARED_TIMER_IRQ was easier to understand.
> > > >
> > >
> > > It is, but the point is that we should not define a normalized
> > > interface; older ARM patches are obsoleted by the very existence of the
> > > new one adding a required feature for PXA.
> >
> > AT91.
> >
> > > Therefore, at some point in
> > > time, we are going to deprecate them, removing the conditional from the
> > > Xenomai codebase. In other words, this code is aimed at transitioning
> > > internally between two Adeos patch series, not at providing a stable
> > > interface.
>
> Here is a new version of the patch.
>
Applied, thanks.
> plain text document attachment (xeno-shared-timer-irq.2.diff)
> Index: include/asm-generic/hal.h
> ===================================================================
> --- include/asm-generic/hal.h (revision 1451)
> +++ include/asm-generic/hal.h (working copy)
> @@ -679,6 +679,15 @@
>
> #endif /* CONFIG_IPIPE_TRACE */
>
> +#ifdef ipipe_timer_irq_p
> +/* Timer IRQ is shared. */
> +#define rthal_timer_irq_p() ipipe_timer_irq_p()
> +#define rthal_mark_root_timer_irq() ipipe_mark_root_timer_irq()
> +#else /* !IPIPE_SHARED_TIMER_IRQ */
> +#define rthal_timer_irq_p() 1
> +#define rthal_mark_root_timer_irq() do { } while(0)
> +#endif /* IPIPE_SHARED_TIMER_IRQ */
> +
> #ifdef __cplusplus
> }
> #endif /* __cplusplus */
> Index: include/asm-generic/system.h
> ===================================================================
> --- include/asm-generic/system.h (revision 1451)
> +++ include/asm-generic/system.h (working copy)
> @@ -487,4 +487,6 @@
> #define xnarch_post_graph(obj,state)
> #define xnarch_post_graph_if(obj,state,cond)
>
> +#define xnarch_timer_irq_p() rthal_timer_irq_p()
> +
> #endif /* !_XENO_ASM_GENERIC_SYSTEM_H */
> Index: include/asm-arm/bits/intr.h
> ===================================================================
> --- include/asm-arm/bits/intr.h (revision 1451)
> +++ include/asm-arm/bits/intr.h (working copy)
> @@ -27,6 +27,7 @@
>
> static inline void xnarch_relay_tick(void)
> {
> + rthal_mark_root_timer_irq();
> rthal_irq_host_pend(RTHAL_TIMER_IRQ);
> }
>
> Index: ksrc/skins/vxworks/sysLib.c
> ===================================================================
> --- ksrc/skins/vxworks/sysLib.c (revision 1451)
> +++ ksrc/skins/vxworks/sysLib.c (working copy)
> @@ -24,19 +24,20 @@
>
> static wind_tick_handler_t tick_handler;
> static long tick_handler_arg;
> +static int tick_status [XNARCH_NR_CPUS];
>
> void tickAnnounce(void)
> {
> if (tick_handler != NULL)
> tick_handler(tick_handler_arg);
>
> - xnpod_announce_tick(&nkclock);
> + tick_status[xnarch_current_cpu()] = xnpod_announce_tick(&nkclock);
> }
>
> static int __tickAnnounce(xnintr_t *intr)
> {
> tickAnnounce();
> - return XN_ISR_HANDLED | XN_ISR_NOENABLE;
> + return tick_status[xnarch_current_cpu()];
> }
>
> int wind_sysclk_init(u_long init_rate)
> Index: ksrc/nucleus/pod.c
> ===================================================================
> --- ksrc/nucleus/pod.c (revision 1451)
> +++ ksrc/nucleus/pod.c (working copy)
> @@ -3249,6 +3249,9 @@
> {
> xnsched_t *sched;
>
> + if (!xnarch_timer_irq_p())
> + return XN_ISR_NONE | XN_ISR_NOENABLE | XN_ISR_PROPAGATE;
> +
> sched = xnpod_current_sched();
>
> xnlock_get(&nklock);
--
Philippe.
prev parent reply other threads:[~2006-08-18 14:21 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-17 21:15 [Xenomai-core] [rfc, patch] allow timer interrupt to be shared Gilles Chanteperdrix
2006-08-18 10:55 ` Philippe Gerum
2006-08-18 11:16 ` Gilles Chanteperdrix
2006-08-18 12:36 ` Philippe Gerum
2006-08-18 12:39 ` Philippe Gerum
2006-08-18 13:53 ` Gilles Chanteperdrix
2006-08-18 14:21 ` Philippe Gerum [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1155910883.4326.89.camel@domain.hid \
--to=rpm@xenomai.org \
--cc=gilles.chanteperdrix@xenomai.org \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.