[U-Boot] [RFC][Timer API] Revised Specification - Implementation details

Graeme Russ graeme.russ at gmail.com
Tue May 31 02:24:58 CEST 2011


Hi Reinhard,

On Tue, May 31, 2011 at 4:57 AM, Reinhard Meyer
<u-boot at 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

> make_timeout() can be arch/soc/platform specific and take into account to return at least
> 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))
		...

> If anyone sees the need, make_timeout (or what ever it might be called) could have
> a second parameter, indicating whether round up or round down is desired.
>
> ...
>
> I also agree to remove the parameter of get_timer(), but we should also get rid of
> CONFIG_SYS_HZ.

Wholeheartedly agree

Regards,

Graeme


More information about the U-Boot mailing list