From: Nick Garnett <nickg@ecoscentric.com>
To: "Mike Sweeney" <msweeney77@gmail.com>
Cc: ecos-discuss@ecos.sourceware.org
Subject: Re: [ECOS] HAL_INTERRUPT_ACKNOWLEDGE question
Date: Thu, 07 Jun 2007 15:11:00 -0000 [thread overview]
Message-ID: <m3y7iwf5hw.fsf@xl5.calivar.com> (raw)
In-Reply-To: <70d4f620706062016s593a05aen95aebfdad3f4ecf@mail.gmail.com>
"Mike Sweeney" <msweeney77@gmail.com> writes:
> I am a little confused about what HAL_INTERRUPT_ACKNOWLEDGE is
> intended to do. The reference manual for eCos says that it is used if
> the interrupt controller requires you to acknowledge an interrupt. The
> reason I am confused is that an interrupt service routine for a device
> may need to clear a status flag in a peripheral status register even
> if there is no interrupt controller. Is the intent that each interrupt
> service routine handle this clearing of the flag in the peripheral
> status register on its own, in addition to calling
> HAL_INTERRUPT_ACKNOWLEDGE for handling anything that has to do with
> the interrupt controller? It seems this is the case, but why is there
> this special function in the HAL for handling the interrupt controller
> acknowledgement? Why isn't this just handled directly by each device's
> interrupt service routine without going through this interface?
>
> The hal_clock_reset() function makes it quite clear to me that each
> ISR handles any status flags itself, because this is the only way the
> ISR for the real time clock could be made generic as it is in the
> kernel by calling hal_clock_reset() in addition to calling
> HAL_INTERRUPT_ACKNOWLEDGE().
There are several reasons for this:
1. Abstraction. The author of a device driver should only need to
concern himself with the details of the device, not with the
details of the interrupt controller too. Acknowledgement is
abstracted for the same reason masking and configuring the
interrupts are also abstracted; the same reason we have HALs, a
kernel, libraries and subsystems: division of responsibility into
well defined layers.
2. Maintenance. If the way the interrupt controller is used needs to
be changed, or a bug is found, it need only be changed in one
place, and one doesn't have to search through all the device
drivers for random bits of code.
3. Portability. Some device drivers are portable: many of the ethernet
drivers, 16550 serial driver, CAN, USB etc. These drivers cannot
contain code for all the possible platforms they may run on;
platform-specific operations need to be handled in a portable way.
--
Nick Garnett eCos Kernel Architect
eCosCentric Limited http://www.eCosCentric.com/ The eCos experts
Barnwell House, Barnwell Drive, Cambridge, UK. Tel: +44 1223 245571
Registered in England and Wales: Reg No 4422071.
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
next prev parent reply other threads:[~2007-06-07 10:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-07 9:14 Mike Sweeney
2007-06-07 10:01 ` Daniel Helgason
2007-06-07 11:55 ` Daniel Helgason
2007-06-07 15:11 ` Nick Garnett [this message]
2007-06-07 17:02 ` Mike Sweeney
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=m3y7iwf5hw.fsf@xl5.calivar.com \
--to=nickg@ecoscentric.com \
--cc=ecos-discuss@ecos.sourceware.org \
--cc=msweeney77@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).