Matthew Fornero wrote:
> On Tue, Nov 4, 2008 at 2:21 PM, Gilles Chanteperdrix
> <[EMAIL PROTECTED]> wrote:
>> Matthew Fornero wrote:
>>> Hello,
>>>
>>> I have an application on x86 that uses an external event (either an
>>> interrupt or a DMA write to a specific memory location) to trigger code
>>> execution, and I believe the local timer interrupt is contributing a
>>> significant amount of jitter. This is a bit of a unique case where the only
>>> code that should be executing on that core is triggered by the event, so
>>> there is no need for anything timer based.
>>>
>>> I'm using a dual core processor with a quiet system, and have placed all of
>>> the "moveable" interrupts on CPU 0 (0-NR_IRQs using ipipe_set_irq_affinity).
>>> Looking at /proc/xenomai/irq and /proc/interrupts shows only the local timer
>>> interrupt increment on CPU 1. When using the DMA write to trigger execution,
>>> placing "sti"/"cli" around the polling routine improves the jitter
>>> substantially.
>>>
>>> Based on the above, is there some way to do one of the following:
>>>
>>> 1). Make a user space task higher priority than the timer interrupt
>>>
>>> or
>>>
>>> 2). A proper way to disable the local timer (vs. disabling all interrupts)
>>> on specific cores, as these cores would only need to run event based
>>> routines.
>> You can disable Xenomai timer interrupt by calling xnpod_stop_timer in
>> kernel-space. However, what you see in /proc/interrupt is not Xenomai
>> timer it is Linux', and it causes a bit of jitter (the time for the
>> I-pipe to mask, ack and return from interrupt). Disabling it would
>> require butchery in Linux code, but maybe simply masking the timer
>> interrupt could work.
>>
>> --
>> Gilles.
>
> I could not find any reference to the function xnpod_stop_timer in the
> xenomai code (searched through the cross-reference).
> I tried using xnarch_stop_timer(cpu), but this seems to disable the
> timers across all CPUs, rather than just the one passed.
> What I'd really like to do is simply mask the interrupt temporarily
> while my critical section is executing (the DMA polling routine)-- is
> there any way to do this? I can go into the local APIC and change the
> mask bits, but using some sort of API seems like it'd be cleaner.
xnpod_stop_timer no longer exists ! The function to disable irqs is
rt_intr_disable if you use the native skin.
--
Gilles.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help