From: Reinhard Meyer <u-boot@emk-elektronik.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC][Timer API] Revised Specification - Implementation details
Date: Tue, 31 May 2011 06:36:22 +0200 [thread overview]
Message-ID: <4DE47046.3010703@emk-elektronik.de> (raw)
In-Reply-To: <BANLkTinUq3ANe-iqReq9aLBsmSOW4NJh1g@mail.gmail.com>
Dear Graeme Russ,
> Hi Reinhard,
>
> On Tue, May 31, 2011 at 2:07 PM, Reinhard Meyer
> <u-boot@emk-elektronik.de> wrote:
>> Dear Graeme Russ,
>>>
>>> Hi Reinhard,
>>>
>>> On Tue, May 31, 2011 at 4:57 AM, Reinhard Meyer
>>> <u-boot@emk-elektronik.de> wrote:
>>>>
>>>> Dear ALL,
>>>>
>>>> it still escapes me why everyone tries to make things so complicated
>>>> INSIDE the loop.
>>>>
>>>> Why not just define an API like this:
>>>>
>>>> u32 timeout = make_timeout(5); /* minimum 5 millisecond timeout */
>>>> u32 start = get_timer();
>>>>
>>>> while ((get_timer() - start)< timeout)
>>>> ...
>>>
>>> The would work if we typedef'd 'timeout'. Otherwise, one runs the risk of
>>> not calling make_timeout() and assuming get_timer() always has a 1ms
>>> resolution
>>
>> If you think people cannot follow API conventions, then typedef it...
>>
>>>
>>>> make_timeout() can be arch/soc/platform specific and take into account to
>>>> return at least
>
> Actually, make_timeout() would not need to be platform specific - All it
> needs is a get_min_ms_resolution() which wuld be a simple inline usually
> returning a const so the compiler would optimise it away
>
>>>> such a value that the timeout is never cut short. (In case of a 10 ms
>>>> NIOS timer,
>>>> make_timeout(5) would have to return the value 20, resulting in a real
>>>> timeout of at least
>>>> 10 ms but upto 20 ms )
>>>
>>> What about this:
>>>
>>> u32 start = get_timer();
>>>
>>> while (!timer_expired(start, timeout))
>>> ...
>>
>> Again.. why put the complicated calculations INSIDE the loop?
>
> Well, the calculations are hidden from the user, and we aren't running a
> high performance system. Also, the most complex calculations will be
> performed each time you call get_timer() anyway. The additional overhead
> of performing a precision rounding will be insignificant
>
> Best to make the API as defensive as possible rather than try to trim off
> a few CPU instructions per loop.
Excuse me, but THIS API does not prevent the user to do a
"(get_timer() - start) < timeout" inside the loop, making your argument moot.
But as I said before, it escapes me why by all means the loop must be more complicated
and obscure (on the user side) then essentially necessary...
Regards,
Reinhard
next prev parent reply other threads:[~2011-05-31 4:36 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
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 [this message]
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=4DE47046.3010703@emk-elektronik.de \
--to=u-boot@emk-elektronik.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox