Damien Zammit, le mar. 06 févr. 2024 03:06:20 +0000, a ecrit:
> +    us = (us * NSEC_PER_USEC) / hpet_period_nsec;
> +
> +    start = HPET32(HPET_COUNTER);
> +
> +    while (1) {
> +        now = HPET32(HPET_COUNTER);
> +
> +        if (now < start) {
> +            /* handle timer overflow within 32 bits */

You don't need to do anything fancy. Even when now < start, thanks to
unsigned 32bit wrap-around, now - start will still be correct. In this:

> +            if ((0xffffffff - start) + now + 1 > us)
> +                break;

The 0xffffffff + 1 piece just wraps-around.

So *all* you need really is

> +            if (now - start > us)
> +                break;

Samuel

Reply via email to