From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC][Timer API] Revised Specification - Implementation details
Date: Mon, 30 May 2011 22:46:38 +1000 [thread overview]
Message-ID: <4DE391AE.2080203@gmail.com> (raw)
In-Reply-To: <20110530123144.8C85514EBCB@gemini.denx.de>
Hi Wolfgang,
On 30/05/11 22:31, Wolfgang Denk wrote:
> Dear Graeme Russ,
>
> In message <4DE383D3.7020008@gmail.com> you wrote:
>>
>> Some platforms are _way_ worse than this - I am sure I have seen a udelay()
>> done with the millisecond time - So udelay(100) could be closer to
>> udelay(1000) - So your above 5 second delay could take as long as 50 seconds!!!
>
> That should show up quickly as soon as you run a "sleep 5" command on
> the console (which is implemented like that).
>
>>> while (test_for_event() == 0) {
>>> now = get_timer(0);
>>> if ((now - start) > timeout)
>>> handle_timeout();
>>>
>>> udelay(100);
>>> }
>>>
>>> Here the loop overhead caused by short delay which may result in a
>>> high number of calls to test_for_event() gets eliminated because
>>> the time reference is independet of the delay.
>>
>> I personally think _any_ timeout greater than 1s (maybe even >500ms) should
>> be done this way
>
> Agreed. As soon as the timeout is >> the interval size of the
> underlying timer service this is the best we can do.
>
>>> start = get_timer(0);
>>>
>>> do_something_complicated();
>>>
>>> now = get_timer(0);
>>>
>>> printf("execution time: %ld millisec\n", now - start);
>>
>> Currently fails spectacularly if do_something_complicated() involves a
>> delay loop which calls reset_timer()
>
> Note that I (intentionally) always used argument 0 in the calls to
> get_timer(). I think we really should get rid of this argument.
>
Agreed - I am more than willing to update all existing timer usages to a
completely new set of timer API functions. I think suffering the pain of
moving to a more well defined API would be better than trying to clunk
around the existing one.
I think we all fairly well agree on how U-Boot will maintain a millisecond
(and possibly microsecond) timer in a platform independent manner using a
platform defined tick counter. Defining a timer API around that is simply a
matter of taste - particularly when it comes to dealing with precision
issues. I think your delta function is a good start - However maybe
something more like ms_delta(u32 from, u32 to) would be a more appropriate
name as it clears the way for us_delta()
Regards,
Graeme
next prev parent reply other threads:[~2011-05-30 12:46 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-26 13:27 [U-Boot] [RFC][Timer API] Revised Specification - Implementation details Graeme Russ
2011-05-26 15:57 ` Simon Glass
2011-05-26 17:28 ` Wolfgang Denk
2011-05-26 22:44 ` Graeme Russ
2011-05-27 5:23 ` Simon Glass
2011-05-27 7:40 ` Wolfgang Denk
2011-05-27 14:46 ` Simon Glass
2011-05-26 16:56 ` J. William Campbell
2011-05-26 17:53 ` Wolfgang Denk
2011-05-26 18:52 ` J. William Campbell
2011-05-26 19:16 ` Wolfgang Denk
2011-05-26 19:54 ` J. William Campbell
2011-05-26 20:27 ` Wolfgang Denk
2011-05-26 20:39 ` J. William Campbell
2011-05-26 22:59 ` Graeme Russ
2011-05-26 23:28 ` Graeme Russ
2011-05-27 1:26 ` J. William Campbell
2011-05-27 1:51 ` Graeme Russ
2011-05-27 3:54 ` J. William Campbell
2011-05-27 4:33 ` Graeme Russ
2011-05-27 6:33 ` J. William Campbell
2011-05-27 6:54 ` Graeme Russ
2011-05-27 15:49 ` J. William Campbell
2011-05-28 0:32 ` Graeme Russ
2011-05-27 7:33 ` Wolfgang Denk
2011-05-27 14:16 ` J. William Campbell
2011-05-27 7:28 ` Wolfgang Denk
2011-05-27 14:04 ` J. William Campbell
2011-05-27 7:13 ` Wolfgang Denk
2011-05-27 7:35 ` Graeme Russ
2011-05-27 7:48 ` Wolfgang Denk
2011-05-27 7:57 ` Graeme Russ
2011-05-27 8:01 ` Graeme Russ
2011-05-27 11:27 ` Wolfgang Denk
2011-05-27 12:43 ` Graeme Russ
2011-05-27 13:07 ` Scott McNutt
2011-05-27 15:00 ` J. William Campbell
2011-05-27 15:13 ` Simon Glass
2011-05-27 17:11 ` J. William Campbell
2011-05-27 15:44 ` Scott McNutt
2011-05-27 15:59 ` J. William Campbell
2011-05-29 15:55 ` Wolfgang Denk
2011-05-29 19:12 ` Simon Glass
2011-05-30 10:57 ` Wolfgang Denk
2011-05-30 11:47 ` Graeme Russ
2011-05-30 12:31 ` Wolfgang Denk
2011-05-30 12:46 ` Graeme Russ [this message]
2011-05-30 18:57 ` Reinhard Meyer
2011-05-31 0:24 ` Graeme Russ
2011-05-31 4:07 ` Reinhard Meyer
2011-05-31 4:24 ` Graeme Russ
2011-05-31 4:36 ` Reinhard Meyer
2011-05-31 4:53 ` Graeme Russ
2011-05-31 5:56 ` Wolfgang Denk
2011-05-31 4:45 ` Simon Glass
2011-05-31 4:53 ` Reinhard Meyer
2011-05-31 5:03 ` Graeme Russ
2011-05-31 5:16 ` Reinhard Meyer
2011-05-31 6:03 ` Wolfgang Denk
2011-05-31 6:23 ` Graeme Russ
2011-05-31 5:18 ` Wolfgang Denk
2011-05-31 5:37 ` Reinhard Meyer
2011-05-31 6:10 ` Wolfgang Denk
2011-05-31 4:56 ` Simon Glass
2011-05-31 5:49 ` Wolfgang Denk
2011-05-31 6:28 ` Graeme Russ
2011-05-31 6:29 ` Graeme Russ
2011-06-15 13:17 ` Graeme Russ
2011-06-15 16:03 ` Simon Glass
2011-06-15 20:38 ` Graeme Russ
2011-06-15 21:58 ` Simon Glass
2011-06-15 23:09 ` Graeme Russ
2011-06-16 5:53 ` Simon Glass
2011-06-16 6:27 ` Graeme Russ
2011-06-16 13:58 ` Simon Glass
2011-05-27 11:26 ` Wolfgang Denk
2011-05-27 14:23 ` J. William Campbell
2011-05-28 5:53 ` Graeme Russ
2011-05-28 6:18 ` Reinhard Meyer
2011-05-28 8:59 ` Graeme Russ
2011-05-29 1:41 ` J. William Campbell
2011-05-26 17:49 ` Wolfgang Denk
2011-05-26 22:51 ` Graeme Russ
2011-05-27 7:17 ` Wolfgang Denk
2011-05-27 7:33 ` Graeme Russ
2011-05-27 7:45 ` Wolfgang Denk
2011-05-27 14:58 ` Simon Glass
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=4DE391AE.2080203@gmail.com \
--to=graeme.russ@gmail.com \
--cc=u-boot@lists.denx.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.