On Thu, 30 Apr 2020 at 12:51, Peter Maydell <peter.mayd...@linaro.org> wrote: > > This object may be used to represent a clock inside a clock tree. > > A clock may be connected to another clock so that it receives update, > through a callback, whenever the source/parent clock is updated. > > Although only the root clock of a clock tree controls the values > (represented as periods) of all clocks in tree, each clock holds > a local state containing the current value so that it can be fetched > independently. It will allows us to fullfill migration requirements > by migrating each clock independently of others.
> +#define CLOCK_SECOND (1000000000llu << 32) It turns out that FreeBSD's time.h defines a CLOCK_SECOND macro, which means this doesn't compile on that platform. I'm going to rename it CLOCK_PERIOD_1SEC; it's only used in include/hw/clock.h so not a big change: diff --git a/include/hw/clock.h b/include/hw/clock.h index f3e44e9460c..f822a942209 100644 --- a/include/hw/clock.h +++ b/include/hw/clock.h @@ -32,15 +32,15 @@ typedef void ClockCallback(void *opaque); * + at 1Ghz, resolution is ~0.2Hz * + at 10Ghz, resolution is ~20Hz */ -#define CLOCK_SECOND (1000000000llu << 32) +#define CLOCK_PERIOD_1SEC (1000000000llu << 32) /* * macro helpers to convert to hertz / nanosecond */ -#define CLOCK_PERIOD_FROM_NS(ns) ((ns) * (CLOCK_SECOND / 1000000000llu)) -#define CLOCK_PERIOD_TO_NS(per) ((per) / (CLOCK_SECOND / 1000000000llu)) -#define CLOCK_PERIOD_FROM_HZ(hz) (((hz) != 0) ? CLOCK_SECOND / (hz) : 0u) -#define CLOCK_PERIOD_TO_HZ(per) (((per) != 0) ? CLOCK_SECOND / (per) : 0u) +#define CLOCK_PERIOD_FROM_NS(ns) ((ns) * (CLOCK_PERIOD_1SEC / 1000000000llu)) +#define CLOCK_PERIOD_TO_NS(per) ((per) / (CLOCK_PERIOD_1SEC / 1000000000llu)) +#define CLOCK_PERIOD_FROM_HZ(hz) (((hz) != 0) ? CLOCK_PERIOD_1SEC / (hz) : 0u) +#define CLOCK_PERIOD_TO_HZ(per) (((per) != 0) ? CLOCK_PERIOD_1SEC / (per) : 0u) /** * Clock: thanks -- PMM