[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/4] clock: Introduce clock_ticks_to_ns()
From: |
Richard Henderson |
Subject: |
Re: [PATCH v2 1/4] clock: Introduce clock_ticks_to_ns() |
Date: |
Tue, 15 Dec 2020 09:21:26 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
On 12/15/20 9:09 AM, Peter Maydell wrote:
> The clock_get_ns() API claims to return the period of a clock in
> nanoseconds. Unfortunately since it returns an integer and a
> clock's period is represented in units of 2^-32 nanoseconds,
> the result is often an approximation, and calculating a clock
> expiry deadline by multiplying clock_get_ns() by a number-of-ticks
> is unacceptably inaccurate.
>
> Introduce a new API clock_ticks_to_ns() which returns the number
> of nanoseconds it takes the clock to make a given number of ticks.
> This function can do the complete calculation internally and
> will thus give a more accurate result.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> The 64x64->128 multiply is a bit painful for 32-bit and I
> guess in theory since we know we only want bits [95:32]
> of the result we could special-case it, but TBH I don't
> think 32-bit hosts merit much optimization effort these days.
>
> Changes in v2: saturate the result to INT64_MAX.
> ---
> docs/devel/clocks.rst | 29 +++++++++++++++++++++++++++++
> include/hw/clock.h | 41 +++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 70 insertions(+)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
- [PATCH v2 0/4] clock: Get rid of clock_get_ns(), Peter Maydell, 2020/12/15
- [PATCH v2 1/4] clock: Introduce clock_ticks_to_ns(), Peter Maydell, 2020/12/15
- [PATCH v2 2/4] target/mips: Don't use clock_get_ns() in clock period calculation, Peter Maydell, 2020/12/15
- [PATCH v2 3/4] clock: Remove clock_get_ns(), Peter Maydell, 2020/12/15
- [PATCH v2 4/4] clock: Define and use new clock_display_freq(), Peter Maydell, 2020/12/15
- Re: [PATCH v2 0/4] clock: Get rid of clock_get_ns(), Philippe Mathieu-Daudé, 2020/12/15