[PATCH 1/4] clock: Change cyc2ns return type to uint64_t
Sascha Hauer
sha at pengutronix.de
Fri Mar 26 08:28:39 GMT 2021
Hi Jules,
On Thu, Mar 25, 2021 at 02:38:34PM +0100, Jules Maselbas wrote:
> Using an uint32_t to count nanosec will overflow every ~4sec, this means
> that if get_time_ns is not called often enough the time keeping will be
> wrong. By changing the return type to uint64_t doesn't fix the underlying
> overflow issue but it will take more than 500 years to happen and I think
> it's safe to assume this won't be an issue.
That's a nice one. I was aware that we'll have overflow issues when the
underlying timer runs over more than once (which can happen quite fast
with 32bit timers), but I wasn't aware that we have a problem after 4
seconds no matter how often the timer overflows.
Applied, thanks
Sascha
>
> diff --git a/include/clock.h b/include/clock.h
> index d681bf630..e6197e7eb 100644
> --- a/include/clock.h
> +++ b/include/clock.h
> @@ -17,7 +17,7 @@ struct clocksource {
> int (*init)(struct clocksource*);
> };
>
> -static inline uint32_t cyc2ns(struct clocksource *cs, uint64_t cycles)
> +static inline uint64_t cyc2ns(struct clocksource *cs, uint64_t cycles)
> {
> uint64_t ret = cycles;
> ret = (ret * cs->mult) >> cs->shift;
> --
> 2.17.1
>
>
>
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list