This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: how to handle missed interrupt issue?
- From: Andrew Lunn <andrew at lunn dot ch>
- To: Dave Milter <davemilter at gmail dot com>
- Cc: ecos-discuss at sourceware dot org
- Date: Thu, 5 Feb 2009 16:00:21 +0100
- Subject: Re: [ECOS] how to handle missed interrupt issue?
- References: <2a382c6e0902050650w4f59a9a9m4f5d594596694ef9@mail.gmail.com>
> Now I want implement function to change circular buffer pointer,
> but if I do such simple thing:
> cyg_drv_isr_lock()
> change pointer
> cyg_drv_isr_unlock()
>
> there is probability that I lost interrupt between cyg_drv_isr_lock()
> and cyg_drv_isr_unlock(),
You should not loose the interrupt. The interrupt controller will
still capture the interrupt during the period interrupts are
disabled. Once interrupts are enabled again you then get the
interrupt.
The only problem you have is if more than one interrupt occurs from
the same device during the time interrupts are disabled. After
interrupts are enabled again you only get one interrupt from the
interrupt controller.
Andrew
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss