public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: e.coullien@faiveley.com
Cc: ecos-discuss@ecos.sourceware.org
Subject: Re: [ECOS] eCos Interrupt timing
Date: Fri, 24 Jun 2005 13:18:00 -0000	[thread overview]
Message-ID: <20050624131711.GC7187@lunn.ch> (raw)
In-Reply-To: <C125702A.004751CA.00@smtp.faiveley.fr>

On Fri, Jun 24, 2005 at 02:59:07PM +0200, e.coullien@faiveley.com wrote:
> 
> 
> 
> Hello,
> 
> We try to understand what ecos is doing when receiving an interrupt.
> We modified temporally the file vector.S to trace on a logic output a signal
> that represent how long is the interrupt time process
> In this file, we set the signal before the context saving and we unset it just
> before the context restoring
> Then on the oscilloscope, we see that the signal is set at every tick system and
> it is unset  500us (for a tick of 1ms) later.
> During this time, The Decrementer ISR is executed (100 us) then interrupt_end().
> It seems most of the time is spent in cyg_scheduler::unlock().
> We don't understand what does ecos during these 400us (500-100).

It does all the interesting things....

If the unlock causes the schedular lock to become 0 unlock_inner() is
called. When this is called it means the schedular is in a consistent
state and can do some real work. If there are any pending DSR they are
called. So for the timer ISR the timer DSR will be called. These DSRs
may result in a higher priority thread becoming runnable, or the
current thread might no longer be runnable. So after the DSRs are run
it then decides if another thread should be run. If so it will setup
the context to be restored so that the new thread is restored, not the
one that was interrupted. Any ASRs which are queued may also be
called.

Plus there is various checking done if you have it enabled. Things
like stack checking etc.

The code is quite well commented, so just read it to find out what is
going on.

        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

      reply	other threads:[~2005-06-24 13:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-24 12:59 e.coullien
2005-06-24 13:18 ` Andrew Lunn [this message]

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=20050624131711.GC7187@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=e.coullien@faiveley.com \
    --cc=ecos-discuss@ecos.sourceware.org \
    /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).