On Friday 21 December 2012, Chunhe Lan wrote:
>
> +static inline void mmc_delay(unsigned int ms)
> +{
> + ktime_t end = ktime_add_us(ktime_get(), ms * 1000);
> +
> + while (1) {
> + s64 remaining;
> +
> + cond_resched();
> + remaining = ktime_to_us(ktime_sub(end, ktime_get()));
> + if (remaining < 0)
> + break;
> +
> + udelay(min_t(u32, remaining, 100));
> + }
> +}
The new logic is more accurate than the old one, but it still wastes
a lot of energy and CPU cycles. Could you perhaps use an hrtimer to
set the exact timeout and actually sleep?
Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html