public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
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

  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).