From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4910A0BD.8020808@domain.hid> Date: Tue, 04 Nov 2008 20:21:33 +0100 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <843a47610811040527v582d1aa0oce35d4278b6c6af9@domain.hid> In-Reply-To: <843a47610811040527v582d1aa0oce35d4278b6c6af9@domain.hid> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai-help] Masking / Disabling the local timer interrupt List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Matthew Fornero Cc: xenomai@xenomai.org 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.