diff options
author | Philippe Mathieu-Daudé <f4bug@amsat.org> | 2020-08-28 10:02:44 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2020-08-28 10:02:44 +0100 |
commit | 15aa2876d9c7181c58305430f726461a2f24cb00 (patch) | |
tree | a8973f5844cc55b12ac08d46ea2017d616ad3f40 | |
parent | bb80ae077ebcc7e0cdc0f7e2ec663896b6103da1 (diff) | |
download | qemu-15aa2876d9c7181c58305430f726461a2f24cb00.zip qemu-15aa2876d9c7181c58305430f726461a2f24cb00.tar.gz qemu-15aa2876d9c7181c58305430f726461a2f24cb00.tar.bz2 |
hw/clock: Let clock_set() return boolean value
Let clock_set() return a boolean value whether the clock
has been updated or not.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20200806123858.30058-3-f4bug@amsat.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | hw/core/clock.c | 7 | ||||
-rw-r--r-- | include/hw/clock.h | 12 |
2 files changed, 13 insertions, 6 deletions
diff --git a/hw/core/clock.c b/hw/core/clock.c index 3c0daf7..7066282 100644 --- a/hw/core/clock.c +++ b/hw/core/clock.c @@ -34,11 +34,16 @@ void clock_clear_callback(Clock *clk) clock_set_callback(clk, NULL, NULL); } -void clock_set(Clock *clk, uint64_t period) +bool clock_set(Clock *clk, uint64_t period) { + if (clk->period == period) { + return false; + } trace_clock_set(CLOCK_PATH(clk), CLOCK_PERIOD_TO_NS(clk->period), CLOCK_PERIOD_TO_NS(period)); clk->period = period; + + return true; } static void clock_propagate_period(Clock *clk, bool call_callbacks) diff --git a/include/hw/clock.h b/include/hw/clock.h index 468fed0..d85af45 100644 --- a/include/hw/clock.h +++ b/include/hw/clock.h @@ -127,17 +127,19 @@ void clock_set_source(Clock *clk, Clock *src); * @value: the clock's value, 0 means unclocked * * Set the local cached period value of @clk to @value. + * + * @return: true if the clock is changed. */ -void clock_set(Clock *clk, uint64_t value); +bool clock_set(Clock *clk, uint64_t value); -static inline void clock_set_hz(Clock *clk, unsigned hz) +static inline bool clock_set_hz(Clock *clk, unsigned hz) { - clock_set(clk, CLOCK_PERIOD_FROM_HZ(hz)); + return clock_set(clk, CLOCK_PERIOD_FROM_HZ(hz)); } -static inline void clock_set_ns(Clock *clk, unsigned ns) +static inline bool clock_set_ns(Clock *clk, unsigned ns) { - clock_set(clk, CLOCK_PERIOD_FROM_NS(ns)); + return clock_set(clk, CLOCK_PERIOD_FROM_NS(ns)); } /** |