timecounting: use C99-style initialization for all timecounter structs

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

timecounting: use C99-style initialization for all timecounter structs

Scott Cheloha
Hi,

If the timecounter struct changes again in the future it will be
easier to make the change if we are using C99-style initialization
everywhere.  In general I think C99-style initialization is easier to
read for larger structs.  The timecounter struct definitely qualifies
as "larger".  We probably should already be doing this but nobody has
bothered yet.

So I will bother.  This patch changes every timecounter struct to use
C99-style initialization.  Some are already using it but most are not.

Yes, I am aware that this is tedious to review.  I'm sorry.  I think
suffering this now will pay off in the future.

Speaking of the future: in a subsequent patch I would like to remove
several of the the zero and NULL members, as C99 guarantees that
omission of a member at initialization causes it to be implicitly
zeroed.  For instance, there is no reason to set .tc_user if the
timecounter has no corresponding driver in libc.  There are also no
drivers setting the .tc_poll_pps function pointer, so we can just let
it implicitly be NULL.  And if the timecounter needs no private cookie
we don't need to explicitly set .tc_priv to NULL.  Et cetera.

I suppose if people prefer it we _could_ do such changes in this
patch.  I'm leaning toward not doing that.  Switching to the C99 style
*and* dropping members will make review more difficult and increase
the likelihood of a mistake, i.e. I will accidentally break the build
on some platform and people will yell at me, which I want to avoid.

Thoughts?  Preferences?  ok?

Index: ./arch/alpha/alpha/clock.c
===================================================================
RCS file: /cvs/src/sys/arch/alpha/alpha/clock.c,v
retrieving revision 1.24
diff -u -p -r1.24 clock.c
--- ./arch/alpha/alpha/clock.c 6 Jul 2020 13:33:06 -0000 1.24
+++ ./arch/alpha/alpha/clock.c 19 Feb 2021 02:57:55 -0000
@@ -64,7 +64,14 @@ int clk_irq = 0;
 
 u_int rpcc_get_timecount(struct timecounter *);
 struct timecounter rpcc_timecounter = {
- rpcc_get_timecount, NULL, ~0u, 0, "rpcc", 0, NULL, 0
+ .tc_get_timecount = rpcc_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = 0,
+ .tc_name = "rpcc",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 extern todr_chip_handle_t todr_handle;
Index: ./arch/amd64/amd64/tsc.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/tsc.c,v
retrieving revision 1.22
diff -u -p -r1.22 tsc.c
--- ./arch/amd64/amd64/tsc.c 24 Dec 2020 04:20:48 -0000 1.22
+++ ./arch/amd64/amd64/tsc.c 19 Feb 2021 02:57:55 -0000
@@ -52,7 +52,14 @@ extern u_int32_t lapic_per_second;
 #endif
 
 struct timecounter tsc_timecounter = {
- tsc_get_timecount, NULL, ~0u, 0, "tsc", -1000, NULL, TC_TSC
+ .tc_get_timecount = tsc_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = 0,
+ .tc_name = "tsc",
+ .tc_quality = -1000,
+ .tc_priv = NULL,
+ .tc_user = TC_TSC,
 };
 
 uint64_t
Index: ./arch/amd64/isa/clock.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/isa/clock.c,v
retrieving revision 1.34
diff -u -p -r1.34 clock.c
--- ./arch/amd64/isa/clock.c 6 Jul 2020 13:33:06 -0000 1.34
+++ ./arch/amd64/isa/clock.c 19 Feb 2021 02:57:55 -0000
@@ -116,7 +116,14 @@ u_int i8254_get_timecount(struct timecou
 u_int i8254_simple_get_timecount(struct timecounter *tc);
 
 static struct timecounter i8254_timecounter = {
- i8254_get_timecount, NULL, ~0u, TIMER_FREQ, "i8254", 0, NULL, 0
+ .tc_get_timecount = i8254_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = TIMER_FREQ,
+ .tc_name = "i8254",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 int clockintr(void *);
Index: ./arch/armv7/omap/dmtimer.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/omap/dmtimer.c,v
retrieving revision 1.9
diff -u -p -r1.9 dmtimer.c
--- ./arch/armv7/omap/dmtimer.c 19 Jan 2021 18:04:43 -0000 1.9
+++ ./arch/armv7/omap/dmtimer.c 19 Feb 2021 02:57:55 -0000
@@ -111,7 +111,13 @@ void dmtimer_setstatclockrate(int newhz)
 u_int dmtimer_get_timecount(struct timecounter *);
 
 static struct timecounter dmtimer_timecounter = {
- dmtimer_get_timecount, NULL, 0xffffffff, 0, "dmtimer", 0, NULL
+ .tc_get_timecount = dmtimer_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "dmtimer",
+ .tc_quality = 0,
+ .tc_priv = NULL,
 };
 
 bus_space_handle_t dmtimer_ioh0;
Index: ./arch/armv7/omap/gptimer.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/omap/gptimer.c,v
retrieving revision 1.11
diff -u -p -r1.11 gptimer.c
--- ./arch/armv7/omap/gptimer.c 19 Jan 2021 18:04:43 -0000 1.11
+++ ./arch/armv7/omap/gptimer.c 19 Feb 2021 02:57:56 -0000
@@ -113,7 +113,14 @@ int gptimer_irq = 0;
 u_int gptimer_get_timecount(struct timecounter *);
 
 static struct timecounter gptimer_timecounter = {
- gptimer_get_timecount, NULL, 0xffffffff, 0, "gptimer", 0, NULL, 0
+ .tc_get_timecount = gptimer_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "gptimer",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 volatile u_int32_t nexttickevent;
Index: ./arch/armv7/sunxi/sxitimer.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/sunxi/sxitimer.c,v
retrieving revision 1.15
diff -u -p -r1.15 sxitimer.c
--- ./arch/armv7/sunxi/sxitimer.c 19 Jan 2021 18:04:43 -0000 1.15
+++ ./arch/armv7/sunxi/sxitimer.c 19 Feb 2021 02:57:56 -0000
@@ -89,7 +89,14 @@ void sxitimer_delay(u_int);
 u_int sxitimer_get_timecount(struct timecounter *);
 
 static struct timecounter sxitimer_timecounter = {
- sxitimer_get_timecount, NULL, 0xffffffff, 0, "sxitimer", 0, NULL, 0
+ .tc_get_timecount = sxitimer_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "sxitimer",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 bus_space_tag_t sxitimer_iot;
Index: ./arch/arm/cortex/amptimer.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/cortex/amptimer.c,v
retrieving revision 1.10
diff -u -p -r1.10 amptimer.c
--- ./arch/arm/cortex/amptimer.c 19 Jan 2021 18:04:43 -0000 1.10
+++ ./arch/arm/cortex/amptimer.c 19 Feb 2021 02:57:56 -0000
@@ -67,7 +67,14 @@ int32_t amptimer_frequency = TIMER_FREQU
 u_int amptimer_get_timecount(struct timecounter *);
 
 static struct timecounter amptimer_timecounter = {
- amptimer_get_timecount, NULL, 0xffffffff, 0, "amptimer", 0, NULL, 0
+ .tc_get_timecount = amptimer_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "amptimer",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 #define MAX_ARM_CPUS 8
Index: ./arch/arm/cortex/agtimer.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/cortex/agtimer.c,v
retrieving revision 1.11
diff -u -p -r1.11 agtimer.c
--- ./arch/arm/cortex/agtimer.c 19 Jan 2021 18:04:43 -0000 1.11
+++ ./arch/arm/cortex/agtimer.c 19 Feb 2021 02:57:56 -0000
@@ -46,7 +46,13 @@ int32_t agtimer_frequency = TIMER_FREQUE
 u_int agtimer_get_timecount(struct timecounter *);
 
 static struct timecounter agtimer_timecounter = {
- agtimer_get_timecount, NULL, 0xffffffff, 0, "agtimer", 0, NULL
+ .tc_get_timecount = agtimer_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "agtimer",
+ .tc_quality = 0,
+ .tc_priv = NULL,
 };
 
 struct agtimer_pcpu_softc {
Index: ./arch/arm64/dev/agtimer.c
===================================================================
RCS file: /cvs/src/sys/arch/arm64/dev/agtimer.c,v
retrieving revision 1.16
diff -u -p -r1.16 agtimer.c
--- ./arch/arm64/dev/agtimer.c 19 Jan 2021 18:07:15 -0000 1.16
+++ ./arch/arm64/dev/agtimer.c 19 Feb 2021 02:57:56 -0000
@@ -43,8 +43,14 @@ int32_t agtimer_frequency = TIMER_FREQUE
 u_int agtimer_get_timecount(struct timecounter *);
 
 static struct timecounter agtimer_timecounter = {
- agtimer_get_timecount, NULL, 0xffffffff, 0, "agtimer", 0, NULL,
- TC_AGTIMER
+ .tc_get_timecount = agtimer_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "agtimer",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = TC_AGTIMER,
 };
 
 struct agtimer_pcpu_softc {
Index: ./arch/hppa/dev/clock.c
===================================================================
RCS file: /cvs/src/sys/arch/hppa/dev/clock.c,v
retrieving revision 1.31
diff -u -p -r1.31 clock.c
--- ./arch/hppa/dev/clock.c 6 Jul 2020 13:33:07 -0000 1.31
+++ ./arch/hppa/dev/clock.c 19 Feb 2021 02:57:56 -0000
@@ -47,7 +47,14 @@ int cpu_hardclock(void *);
 u_int itmr_get_timecount(struct timecounter *);
 
 struct timecounter itmr_timecounter = {
- itmr_get_timecount, NULL, 0xffffffff, 0, "itmr", 0, NULL, 0
+ .tc_get_timecount = itmr_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "itmr",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 extern todr_chip_handle_t todr_handle;
Index: ./arch/i386/isa/clock.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/isa/clock.c,v
retrieving revision 1.59
diff -u -p -r1.59 clock.c
--- ./arch/i386/isa/clock.c 6 Jul 2020 13:33:07 -0000 1.59
+++ ./arch/i386/isa/clock.c 19 Feb 2021 02:57:56 -0000
@@ -129,7 +129,14 @@ u_int i8254_get_timecount(struct timecou
 u_int i8254_simple_get_timecount(struct timecounter *tc);
 
 static struct timecounter i8254_timecounter = {
- i8254_get_timecount, NULL, ~0u, TIMER_FREQ, "i8254", 0, NULL, 0
+ .tc_get_timecount = i8254_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = TIMER_FREQ,
+ .tc_name = "i8254",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 struct mutex timer_mutex = MUTEX_INITIALIZER(IPL_HIGH);
 u_long rtclock_tval;
Index: ./arch/i386/pci/gscpm.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/pci/gscpm.c,v
retrieving revision 1.10
diff -u -p -r1.10 gscpm.c
--- ./arch/i386/pci/gscpm.c 6 Jul 2020 13:33:07 -0000 1.10
+++ ./arch/i386/pci/gscpm.c 19 Feb 2021 02:57:56 -0000
@@ -50,14 +50,14 @@ void gscpm_setperf(int);
 u_int gscpm_get_timecount(struct timecounter *tc);
 
 struct timecounter gscpm_timecounter = {
- gscpm_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- 0xffffff, /* counter_mask */
- 3579545, /* frequency */
- "GSCPM", /* name */
- 1000, /* quality */
- NULL, /* private bits */
- 0 /* expose to user */
+ .tc_get_timecount = gscpm_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffff,
+ .tc_frequency = 3579545,
+ .tc_name = "GSCPM",
+ .tc_quality = 1000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 struct cfattach gscpm_ca = {
Index: ./arch/i386/pci/ichpcib.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/pci/ichpcib.c,v
retrieving revision 1.29
diff -u -p -r1.29 ichpcib.c
--- ./arch/i386/pci/ichpcib.c 6 Jul 2020 13:33:07 -0000 1.29
+++ ./arch/i386/pci/ichpcib.c 19 Feb 2021 02:57:56 -0000
@@ -58,14 +58,14 @@ void    pcibattach(struct device *, stru
 u_int ichpcib_get_timecount(struct timecounter *tc);
 
 struct timecounter ichpcib_timecounter = {
- ichpcib_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- 0xffffff, /* counter_mask */
- 3579545, /* frequency */
- "ICHPM", /* name */
- 1000, /* quality */
- NULL, /* private bits */
- 0 /* expose to user */
+ .tc_get_timecount = ichpcib_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffff,
+ .tc_frequency = 3579545,
+ .tc_name = "ICHPM",
+ .tc_quality = 1000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 struct cfattach ichpcib_ca = {
Index: ./arch/i386/pci/geodesc.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/pci/geodesc.c,v
retrieving revision 1.15
diff -u -p -r1.15 geodesc.c
--- ./arch/i386/pci/geodesc.c 6 Jul 2020 13:33:07 -0000 1.15
+++ ./arch/i386/pci/geodesc.c 19 Feb 2021 02:57:56 -0000
@@ -60,14 +60,14 @@ struct cfdriver geodesc_cd = {
 u_int   geodesc_get_timecount(struct timecounter *tc);
 
 struct timecounter geodesc_timecounter = {
- geodesc_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- 0xffffffff, /* counter_mask */
- 27000000, /* frequency */
- "GEOTSC", /* name */
- 2000, /* quality */
- NULL, /* private bits */
- 0 /* expose to user */
+ .tc_get_timecount = geodesc_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 27000000,
+ .tc_name = "GEOTSC",
+ .tc_quality = 2000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 int
Index: ./arch/macppc/macppc/clock.c
===================================================================
RCS file: /cvs/src/sys/arch/macppc/macppc/clock.c,v
retrieving revision 1.47
diff -u -p -r1.47 clock.c
--- ./arch/macppc/macppc/clock.c 26 Aug 2020 03:29:06 -0000 1.47
+++ ./arch/macppc/macppc/clock.c 19 Feb 2021 02:57:56 -0000
@@ -57,7 +57,14 @@ u_int32_t ns_per_tick = 320;
 static int32_t ticks_per_intr;
 
 static struct timecounter tb_timecounter = {
- tb_get_timecount, NULL, 0xffffffff, 0, "tb", 0, NULL, TC_TB
+ .tc_get_timecount = tb_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "tb",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = TC_TB,
 };
 
 /* calibrate the timecounter frequency for the listed models */
Index: ./arch/mips64/mips64/mips64_machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/mips64/mips64/mips64_machdep.c,v
retrieving revision 1.34
diff -u -p -r1.34 mips64_machdep.c
--- ./arch/mips64/mips64/mips64_machdep.c 13 Jan 2021 16:28:49 -0000 1.34
+++ ./arch/mips64/mips64/mips64_machdep.c 19 Feb 2021 02:57:56 -0000
@@ -267,14 +267,14 @@ delay(int n)
 u_int cp0_get_timecount(struct timecounter *);
 
 struct timecounter cp0_timecounter = {
- cp0_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- 0xffffffff, /* counter_mask */
- 0, /* frequency */
- "CP0", /* name */
- 0, /* quality */
- NULL, /* private bits */
- 0, /* expose to user */
+ .tc_get_timecount = cp0_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "CP0",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 u_int
Index: ./arch/sparc64/dev/psycho.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/dev/psycho.c,v
retrieving revision 1.77
diff -u -p -r1.77 psycho.c
--- ./arch/sparc64/dev/psycho.c 6 Jul 2020 13:33:08 -0000 1.77
+++ ./arch/sparc64/dev/psycho.c 19 Feb 2021 02:57:56 -0000
@@ -127,7 +127,14 @@ extern struct sparc_pci_chipset _sparc_p
 u_int stick_get_timecount(struct timecounter *);
 
 struct timecounter stick_timecounter = {
- stick_get_timecount, NULL, ~0u, 0, "stick", 1000, NULL, 0
+ .tc_get_timecount = stick_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = 0,
+ .tc_name = "stick",
+ .tc_quality = 1000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 /*
Index: ./arch/sparc64/sparc64/clock.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/clock.c,v
retrieving revision 1.67
diff -u -p -r1.67 clock.c
--- ./arch/sparc64/sparc64/clock.c 20 Oct 2020 15:59:17 -0000 1.67
+++ ./arch/sparc64/sparc64/clock.c 19 Feb 2021 02:57:56 -0000
@@ -109,8 +109,14 @@ struct cfdriver clock_cd = {
 u_int tick_get_timecount(struct timecounter *);
 
 struct timecounter tick_timecounter = {
- tick_get_timecount, NULL, ~0u, 0, "tick", 0,
- NULL, TC_TICK
+ .tc_get_timecount = tick_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = 0,
+ .tc_name = "tick",
+ .tc_quality = 0,
+ .tc_priv = NULL,
+ .tc_user = TC_TICK,
 };
 
 u_int sys_tick_get_timecount(struct timecounter *);
Index: ./arch/powerpc64/powerpc64/clock.c
===================================================================
RCS file: /cvs/src/sys/arch/powerpc64/powerpc64/clock.c,v
retrieving revision 1.2
diff -u -p -r1.2 clock.c
--- ./arch/powerpc64/powerpc64/clock.c 12 Jul 2020 20:32:20 -0000 1.2
+++ ./arch/powerpc64/powerpc64/clock.c 19 Feb 2021 02:57:56 -0000
@@ -37,7 +37,13 @@ struct evcount stat_count;
 u_int tb_get_timecount(struct timecounter *);
 
 static struct timecounter tb_timecounter = {
- tb_get_timecount, NULL, 0xffffffff, 0, "tb", 0, NULL
+ .tc_get_timecount = tb_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = "tb",
+ .tc_quality = 0,
+ .tc_priv = NULL,
 };
 
 void cpu_startclock(void);
Index: ./dev/pv/hyperv.c
===================================================================
RCS file: /cvs/src/sys/dev/pv/hyperv.c,v
retrieving revision 1.47
diff -u -p -r1.47 hyperv.c
--- ./dev/pv/hyperv.c 4 Dec 2020 03:22:46 -0000 1.47
+++ ./dev/pv/hyperv.c 19 Feb 2021 02:57:56 -0000
@@ -141,7 +141,14 @@ struct {
 };
 
 struct timecounter hv_timecounter = {
- hv_gettime, 0, 0xffffffff, 10000000, "hyperv", 9001, NULL, 0
+ .tc_get_timecount = hv_gettime,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 10000000,
+ .tc_name = "hyperv",
+ .tc_quality = 9001,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 struct cfdriver hyperv_cd = {
Index: ./dev/pv/pvclock.c
===================================================================
RCS file: /cvs/src/sys/dev/pv/pvclock.c,v
retrieving revision 1.6
diff -u -p -r1.6 pvclock.c
--- ./dev/pv/pvclock.c 6 Jul 2020 13:33:09 -0000 1.6
+++ ./dev/pv/pvclock.c 19 Feb 2021 02:57:56 -0000
@@ -74,7 +74,14 @@ struct cfdriver pvclock_cd = {
 };
 
 struct timecounter pvclock_timecounter = {
- pvclock_get_timecount, NULL, ~0u, 0, NULL, -2000, NULL, 0
+ .tc_get_timecount = pvclock_get_timecount,
+ .tc_poll_pps = NULL,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = 0,
+ .tc_name = NULL,
+ .tc_quality = -2000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 int
Index: ./dev/acpi/acpihpet.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpihpet.c,v
retrieving revision 1.24
diff -u -p -r1.24 acpihpet.c
--- ./dev/acpi/acpihpet.c 6 Jul 2020 13:33:08 -0000 1.24
+++ ./dev/acpi/acpihpet.c 19 Feb 2021 02:57:56 -0000
@@ -40,14 +40,14 @@ void acpihpet_w(bus_space_tag_t _iot, b
     bus_size_t _ioa, uint64_t _val);
 
 static struct timecounter hpet_timecounter = {
- acpihpet_gettime, /* get_timecount */
- 0, /* no poll_pps */
- 0xffffffff, /* counter_mask (32 bits) */
- 0, /* frequency */
- 0, /* name */
- 1000, /* quality */
- NULL, /* private bits */
- 0, /* expose to user */
+ .tc_get_timecount = acpihpet_gettime,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffffff,
+ .tc_frequency = 0,
+ .tc_name = 0,
+ .tc_quality = 1000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 #define HPET_TIMERS 3
Index: ./dev/acpi/acpitimer.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpitimer.c,v
retrieving revision 1.13
diff -u -p -r1.13 acpitimer.c
--- ./dev/acpi/acpitimer.c 6 Jul 2020 13:33:08 -0000 1.13
+++ ./dev/acpi/acpitimer.c 19 Feb 2021 02:57:56 -0000
@@ -31,14 +31,14 @@ void acpitimerattach(struct device *, st
 u_int acpi_get_timecount(struct timecounter *tc);
 
 static struct timecounter acpi_timecounter = {
- acpi_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- 0x00ffffff, /* counter_mask (24 bits) */
- ACPI_FREQUENCY, /* frequency */
- 0, /* name */
- 1000, /* quality */
- NULL, /* private bits */
- 0, /* expose to user */
+ .tc_get_timecount = acpi_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0x00ffffff, /* 24 bits */
+ .tc_frequency = ACPI_FREQUENCY,
+ .tc_name = 0,
+ .tc_quality = 1000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 struct acpitimer_softc {
Index: ./dev/pci/amdpm.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/amdpm.c,v
retrieving revision 1.36
diff -u -p -r1.36 amdpm.c
--- ./dev/pci/amdpm.c 6 Jul 2020 13:33:09 -0000 1.36
+++ ./dev/pci/amdpm.c 19 Feb 2021 02:57:56 -0000
@@ -77,14 +77,14 @@ u_int amdpm_get_timecount(struct timecou
 #endif
 
 static struct timecounter amdpm_timecounter = {
- amdpm_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- 0xffffff, /* counter_mask */
- AMDPM_FREQUENCY, /* frequency */
- "AMDPM", /* name */
- 1000, /* quality */
- NULL, /* private bits */
- 0, /* expose to user */
+ .tc_get_timecount = amdpm_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffff,
+ .tc_frequency = AMDPM_FREQUENCY,
+ .tc_name = "AMDPM",
+ .tc_quality = 1000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 #define AMDPM_CONFREG 0x40
Index: ./dev/pci/viapm.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/viapm.c,v
retrieving revision 1.19
diff -u -p -r1.19 viapm.c
--- ./dev/pci/viapm.c 6 Jul 2020 13:33:09 -0000 1.19
+++ ./dev/pci/viapm.c 19 Feb 2021 02:57:56 -0000
@@ -172,14 +172,14 @@ u_int viapm_get_timecount(struct timecou
 #endif
 
 static struct timecounter viapm_timecounter = {
- viapm_get_timecount, /* get_timecount */
- 0, /* no poll_pps */
- 0xffffff, /* counter_mask */
- VIAPM_FREQUENCY, /* frequency */
- "VIAPM", /* name */
- 1000, /* quality */
- NULL, /* private bits */
- 0, /* expose to user */
+ .tc_get_timecount = viapm_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = 0xffffff,
+ .tc_frequency = VIAPM_FREQUENCY,
+ .tc_name = "VIAPM",
+ .tc_quality = 1000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 struct timeout viapm_timeout;
Index: ./kern/kern_tc.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_tc.c,v
retrieving revision 1.70
diff -u -p -r1.70 kern_tc.c
--- ./kern/kern_tc.c 5 Dec 2020 04:46:34 -0000 1.70
+++ ./kern/kern_tc.c 19 Feb 2021 02:57:56 -0000
@@ -55,7 +55,14 @@ dummy_get_timecount(struct timecounter *
 }
 
 static struct timecounter dummy_timecounter = {
- dummy_get_timecount, 0, ~0u, 1000000, "dummy", -1000000, NULL, 0
+ .tc_get_timecount = dummy_get_timecount,
+ .tc_poll_pps = 0,
+ .tc_counter_mask = ~0u,
+ .tc_frequency = 1000000,
+ .tc_name = "dummy",
+ .tc_quality = -1000000,
+ .tc_priv = NULL,
+ .tc_user = 0,
 };
 
 /*

Reply | Threaded
Open this post in threaded view
|

Re: timecounting: use C99-style initialization for all timecounter structs

Greg Steuck-5
Scott Cheloha <[hidden email]> writes:

> Hi,
>
> If the timecounter struct changes again in the future it will be
> easier to make the change if we are using C99-style initialization
> everywhere.  In general I think C99-style initialization is easier to
> read for larger structs.  The timecounter struct definitely qualifies
> as "larger".  We probably should already be doing this but nobody has
> bothered yet.
>
> So I will bother.  This patch changes every timecounter struct to use
> C99-style initialization.  Some are already using it but most are not.
>
> Yes, I am aware that this is tedious to review.  I'm sorry.  I think
> suffering this now will pay off in the future.

Nah, not bad at all. Could you check if you get identical object files
by chance? It would be a nice double check.

>
> Speaking of the future: in a subsequent patch I would like to remove
> several of the the zero and NULL members, as C99 guarantees that
> omission of a member at initialization causes it to be implicitly
> zeroed.  For instance, there is no reason to set .tc_user if the
> timecounter has no corresponding driver in libc.  There are also no
> drivers setting the .tc_poll_pps function pointer, so we can just let
> it implicitly be NULL.  And if the timecounter needs no private cookie
> we don't need to explicitly set .tc_priv to NULL.  Et cetera.
>
> I suppose if people prefer it we _could_ do such changes in this
> patch.  I'm leaning toward not doing that.  Switching to the C99 style
> *and* dropping members will make review more difficult and increase
> the likelihood of a mistake, i.e. I will accidentally break the build
> on some platform and people will yell at me, which I want to avoid.
>
> Thoughts?  Preferences?  ok?

If others don't mind on some grounds, I'm fairly convinced of this being
a functional no-op and so: OK gnezdo@

>
> Index: ./arch/alpha/alpha/clock.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/alpha/alpha/clock.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 clock.c
> --- ./arch/alpha/alpha/clock.c 6 Jul 2020 13:33:06 -0000 1.24
> +++ ./arch/alpha/alpha/clock.c 19 Feb 2021 02:57:55 -0000
> @@ -64,7 +64,14 @@ int clk_irq = 0;
>  
>  u_int rpcc_get_timecount(struct timecounter *);
>  struct timecounter rpcc_timecounter = {
> - rpcc_get_timecount, NULL, ~0u, 0, "rpcc", 0, NULL, 0
> + .tc_get_timecount = rpcc_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = 0,
> + .tc_name = "rpcc",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  extern todr_chip_handle_t todr_handle;
> Index: ./arch/amd64/amd64/tsc.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/amd64/amd64/tsc.c,v
> retrieving revision 1.22
> diff -u -p -r1.22 tsc.c
> --- ./arch/amd64/amd64/tsc.c 24 Dec 2020 04:20:48 -0000 1.22
> +++ ./arch/amd64/amd64/tsc.c 19 Feb 2021 02:57:55 -0000
> @@ -52,7 +52,14 @@ extern u_int32_t lapic_per_second;
>  #endif
>  
>  struct timecounter tsc_timecounter = {
> - tsc_get_timecount, NULL, ~0u, 0, "tsc", -1000, NULL, TC_TSC
> + .tc_get_timecount = tsc_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = 0,
> + .tc_name = "tsc",
> + .tc_quality = -1000,
> + .tc_priv = NULL,
> + .tc_user = TC_TSC,
>  };
>  
>  uint64_t
> Index: ./arch/amd64/isa/clock.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/amd64/isa/clock.c,v
> retrieving revision 1.34
> diff -u -p -r1.34 clock.c
> --- ./arch/amd64/isa/clock.c 6 Jul 2020 13:33:06 -0000 1.34
> +++ ./arch/amd64/isa/clock.c 19 Feb 2021 02:57:55 -0000
> @@ -116,7 +116,14 @@ u_int i8254_get_timecount(struct timecou
>  u_int i8254_simple_get_timecount(struct timecounter *tc);
>  
>  static struct timecounter i8254_timecounter = {
> - i8254_get_timecount, NULL, ~0u, TIMER_FREQ, "i8254", 0, NULL, 0
> + .tc_get_timecount = i8254_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = TIMER_FREQ,
> + .tc_name = "i8254",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  int clockintr(void *);
> Index: ./arch/armv7/omap/dmtimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/dmtimer.c,v
> retrieving revision 1.9
> diff -u -p -r1.9 dmtimer.c
> --- ./arch/armv7/omap/dmtimer.c 19 Jan 2021 18:04:43 -0000 1.9
> +++ ./arch/armv7/omap/dmtimer.c 19 Feb 2021 02:57:55 -0000
> @@ -111,7 +111,13 @@ void dmtimer_setstatclockrate(int newhz)
>  u_int dmtimer_get_timecount(struct timecounter *);
>  
>  static struct timecounter dmtimer_timecounter = {
> - dmtimer_get_timecount, NULL, 0xffffffff, 0, "dmtimer", 0, NULL
> + .tc_get_timecount = dmtimer_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "dmtimer",
> + .tc_quality = 0,
> + .tc_priv = NULL,
>  };
>  
>  bus_space_handle_t dmtimer_ioh0;
> Index: ./arch/armv7/omap/gptimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/gptimer.c,v
> retrieving revision 1.11
> diff -u -p -r1.11 gptimer.c
> --- ./arch/armv7/omap/gptimer.c 19 Jan 2021 18:04:43 -0000 1.11
> +++ ./arch/armv7/omap/gptimer.c 19 Feb 2021 02:57:56 -0000
> @@ -113,7 +113,14 @@ int gptimer_irq = 0;
>  u_int gptimer_get_timecount(struct timecounter *);
>  
>  static struct timecounter gptimer_timecounter = {
> - gptimer_get_timecount, NULL, 0xffffffff, 0, "gptimer", 0, NULL, 0
> + .tc_get_timecount = gptimer_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "gptimer",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  volatile u_int32_t nexttickevent;
> Index: ./arch/armv7/sunxi/sxitimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/sunxi/sxitimer.c,v
> retrieving revision 1.15
> diff -u -p -r1.15 sxitimer.c
> --- ./arch/armv7/sunxi/sxitimer.c 19 Jan 2021 18:04:43 -0000 1.15
> +++ ./arch/armv7/sunxi/sxitimer.c 19 Feb 2021 02:57:56 -0000
> @@ -89,7 +89,14 @@ void sxitimer_delay(u_int);
>  u_int sxitimer_get_timecount(struct timecounter *);
>  
>  static struct timecounter sxitimer_timecounter = {
> - sxitimer_get_timecount, NULL, 0xffffffff, 0, "sxitimer", 0, NULL, 0
> + .tc_get_timecount = sxitimer_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "sxitimer",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  bus_space_tag_t sxitimer_iot;
> Index: ./arch/arm/cortex/amptimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm/cortex/amptimer.c,v
> retrieving revision 1.10
> diff -u -p -r1.10 amptimer.c
> --- ./arch/arm/cortex/amptimer.c 19 Jan 2021 18:04:43 -0000 1.10
> +++ ./arch/arm/cortex/amptimer.c 19 Feb 2021 02:57:56 -0000
> @@ -67,7 +67,14 @@ int32_t amptimer_frequency = TIMER_FREQU
>  u_int amptimer_get_timecount(struct timecounter *);
>  
>  static struct timecounter amptimer_timecounter = {
> - amptimer_get_timecount, NULL, 0xffffffff, 0, "amptimer", 0, NULL, 0
> + .tc_get_timecount = amptimer_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "amptimer",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  #define MAX_ARM_CPUS 8
> Index: ./arch/arm/cortex/agtimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm/cortex/agtimer.c,v
> retrieving revision 1.11
> diff -u -p -r1.11 agtimer.c
> --- ./arch/arm/cortex/agtimer.c 19 Jan 2021 18:04:43 -0000 1.11
> +++ ./arch/arm/cortex/agtimer.c 19 Feb 2021 02:57:56 -0000
> @@ -46,7 +46,13 @@ int32_t agtimer_frequency = TIMER_FREQUE
>  u_int agtimer_get_timecount(struct timecounter *);
>  
>  static struct timecounter agtimer_timecounter = {
> - agtimer_get_timecount, NULL, 0xffffffff, 0, "agtimer", 0, NULL
> + .tc_get_timecount = agtimer_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "agtimer",
> + .tc_quality = 0,
> + .tc_priv = NULL,
>  };
>  
>  struct agtimer_pcpu_softc {
> Index: ./arch/arm64/dev/agtimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm64/dev/agtimer.c,v
> retrieving revision 1.16
> diff -u -p -r1.16 agtimer.c
> --- ./arch/arm64/dev/agtimer.c 19 Jan 2021 18:07:15 -0000 1.16
> +++ ./arch/arm64/dev/agtimer.c 19 Feb 2021 02:57:56 -0000
> @@ -43,8 +43,14 @@ int32_t agtimer_frequency = TIMER_FREQUE
>  u_int agtimer_get_timecount(struct timecounter *);
>  
>  static struct timecounter agtimer_timecounter = {
> - agtimer_get_timecount, NULL, 0xffffffff, 0, "agtimer", 0, NULL,
> - TC_AGTIMER
> + .tc_get_timecount = agtimer_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "agtimer",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = TC_AGTIMER,
>  };
>  
>  struct agtimer_pcpu_softc {
> Index: ./arch/hppa/dev/clock.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/hppa/dev/clock.c,v
> retrieving revision 1.31
> diff -u -p -r1.31 clock.c
> --- ./arch/hppa/dev/clock.c 6 Jul 2020 13:33:07 -0000 1.31
> +++ ./arch/hppa/dev/clock.c 19 Feb 2021 02:57:56 -0000
> @@ -47,7 +47,14 @@ int cpu_hardclock(void *);
>  u_int itmr_get_timecount(struct timecounter *);
>  
>  struct timecounter itmr_timecounter = {
> - itmr_get_timecount, NULL, 0xffffffff, 0, "itmr", 0, NULL, 0
> + .tc_get_timecount = itmr_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "itmr",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  extern todr_chip_handle_t todr_handle;
> Index: ./arch/i386/isa/clock.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/i386/isa/clock.c,v
> retrieving revision 1.59
> diff -u -p -r1.59 clock.c
> --- ./arch/i386/isa/clock.c 6 Jul 2020 13:33:07 -0000 1.59
> +++ ./arch/i386/isa/clock.c 19 Feb 2021 02:57:56 -0000
> @@ -129,7 +129,14 @@ u_int i8254_get_timecount(struct timecou
>  u_int i8254_simple_get_timecount(struct timecounter *tc);
>  
>  static struct timecounter i8254_timecounter = {
> - i8254_get_timecount, NULL, ~0u, TIMER_FREQ, "i8254", 0, NULL, 0
> + .tc_get_timecount = i8254_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = TIMER_FREQ,
> + .tc_name = "i8254",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  struct mutex timer_mutex = MUTEX_INITIALIZER(IPL_HIGH);
>  u_long rtclock_tval;
> Index: ./arch/i386/pci/gscpm.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/i386/pci/gscpm.c,v
> retrieving revision 1.10
> diff -u -p -r1.10 gscpm.c
> --- ./arch/i386/pci/gscpm.c 6 Jul 2020 13:33:07 -0000 1.10
> +++ ./arch/i386/pci/gscpm.c 19 Feb 2021 02:57:56 -0000
> @@ -50,14 +50,14 @@ void gscpm_setperf(int);
>  u_int gscpm_get_timecount(struct timecounter *tc);
>  
>  struct timecounter gscpm_timecounter = {
> - gscpm_get_timecount, /* get_timecount */
> - 0, /* no poll_pps */
> - 0xffffff, /* counter_mask */
> - 3579545, /* frequency */
> - "GSCPM", /* name */
> - 1000, /* quality */
> - NULL, /* private bits */
> - 0 /* expose to user */
> + .tc_get_timecount = gscpm_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffff,
> + .tc_frequency = 3579545,
> + .tc_name = "GSCPM",
> + .tc_quality = 1000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  struct cfattach gscpm_ca = {
> Index: ./arch/i386/pci/ichpcib.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/i386/pci/ichpcib.c,v
> retrieving revision 1.29
> diff -u -p -r1.29 ichpcib.c
> --- ./arch/i386/pci/ichpcib.c 6 Jul 2020 13:33:07 -0000 1.29
> +++ ./arch/i386/pci/ichpcib.c 19 Feb 2021 02:57:56 -0000
> @@ -58,14 +58,14 @@ void    pcibattach(struct device *, stru
>  u_int ichpcib_get_timecount(struct timecounter *tc);
>  
>  struct timecounter ichpcib_timecounter = {
> - ichpcib_get_timecount, /* get_timecount */
> - 0, /* no poll_pps */
> - 0xffffff, /* counter_mask */
> - 3579545, /* frequency */
> - "ICHPM", /* name */
> - 1000, /* quality */
> - NULL, /* private bits */
> - 0 /* expose to user */
> + .tc_get_timecount = ichpcib_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffff,
> + .tc_frequency = 3579545,
> + .tc_name = "ICHPM",
> + .tc_quality = 1000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  struct cfattach ichpcib_ca = {
> Index: ./arch/i386/pci/geodesc.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/i386/pci/geodesc.c,v
> retrieving revision 1.15
> diff -u -p -r1.15 geodesc.c
> --- ./arch/i386/pci/geodesc.c 6 Jul 2020 13:33:07 -0000 1.15
> +++ ./arch/i386/pci/geodesc.c 19 Feb 2021 02:57:56 -0000
> @@ -60,14 +60,14 @@ struct cfdriver geodesc_cd = {
>  u_int   geodesc_get_timecount(struct timecounter *tc);
>  
>  struct timecounter geodesc_timecounter = {
> - geodesc_get_timecount, /* get_timecount */
> - 0, /* no poll_pps */
> - 0xffffffff, /* counter_mask */
> - 27000000, /* frequency */
> - "GEOTSC", /* name */
> - 2000, /* quality */
> - NULL, /* private bits */
> - 0 /* expose to user */
> + .tc_get_timecount = geodesc_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 27000000,
> + .tc_name = "GEOTSC",
> + .tc_quality = 2000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  int
> Index: ./arch/macppc/macppc/clock.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/macppc/macppc/clock.c,v
> retrieving revision 1.47
> diff -u -p -r1.47 clock.c
> --- ./arch/macppc/macppc/clock.c 26 Aug 2020 03:29:06 -0000 1.47
> +++ ./arch/macppc/macppc/clock.c 19 Feb 2021 02:57:56 -0000
> @@ -57,7 +57,14 @@ u_int32_t ns_per_tick = 320;
>  static int32_t ticks_per_intr;
>  
>  static struct timecounter tb_timecounter = {
> - tb_get_timecount, NULL, 0xffffffff, 0, "tb", 0, NULL, TC_TB
> + .tc_get_timecount = tb_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "tb",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = TC_TB,
>  };
>  
>  /* calibrate the timecounter frequency for the listed models */
> Index: ./arch/mips64/mips64/mips64_machdep.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/mips64/mips64/mips64_machdep.c,v
> retrieving revision 1.34
> diff -u -p -r1.34 mips64_machdep.c
> --- ./arch/mips64/mips64/mips64_machdep.c 13 Jan 2021 16:28:49 -0000 1.34
> +++ ./arch/mips64/mips64/mips64_machdep.c 19 Feb 2021 02:57:56 -0000
> @@ -267,14 +267,14 @@ delay(int n)
>  u_int cp0_get_timecount(struct timecounter *);
>  
>  struct timecounter cp0_timecounter = {
> - cp0_get_timecount, /* get_timecount */
> - 0, /* no poll_pps */
> - 0xffffffff, /* counter_mask */
> - 0, /* frequency */
> - "CP0", /* name */
> - 0, /* quality */
> - NULL, /* private bits */
> - 0, /* expose to user */
> + .tc_get_timecount = cp0_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "CP0",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  u_int
> Index: ./arch/sparc64/dev/psycho.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/sparc64/dev/psycho.c,v
> retrieving revision 1.77
> diff -u -p -r1.77 psycho.c
> --- ./arch/sparc64/dev/psycho.c 6 Jul 2020 13:33:08 -0000 1.77
> +++ ./arch/sparc64/dev/psycho.c 19 Feb 2021 02:57:56 -0000
> @@ -127,7 +127,14 @@ extern struct sparc_pci_chipset _sparc_p
>  u_int stick_get_timecount(struct timecounter *);
>  
>  struct timecounter stick_timecounter = {
> - stick_get_timecount, NULL, ~0u, 0, "stick", 1000, NULL, 0
> + .tc_get_timecount = stick_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = 0,
> + .tc_name = "stick",
> + .tc_quality = 1000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  /*
> Index: ./arch/sparc64/sparc64/clock.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/sparc64/sparc64/clock.c,v
> retrieving revision 1.67
> diff -u -p -r1.67 clock.c
> --- ./arch/sparc64/sparc64/clock.c 20 Oct 2020 15:59:17 -0000 1.67
> +++ ./arch/sparc64/sparc64/clock.c 19 Feb 2021 02:57:56 -0000
> @@ -109,8 +109,14 @@ struct cfdriver clock_cd = {
>  u_int tick_get_timecount(struct timecounter *);
>  
>  struct timecounter tick_timecounter = {
> - tick_get_timecount, NULL, ~0u, 0, "tick", 0,
> - NULL, TC_TICK
> + .tc_get_timecount = tick_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = 0,
> + .tc_name = "tick",
> + .tc_quality = 0,
> + .tc_priv = NULL,
> + .tc_user = TC_TICK,
>  };
>  
>  u_int sys_tick_get_timecount(struct timecounter *);
> Index: ./arch/powerpc64/powerpc64/clock.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/powerpc64/powerpc64/clock.c,v
> retrieving revision 1.2
> diff -u -p -r1.2 clock.c
> --- ./arch/powerpc64/powerpc64/clock.c 12 Jul 2020 20:32:20 -0000 1.2
> +++ ./arch/powerpc64/powerpc64/clock.c 19 Feb 2021 02:57:56 -0000
> @@ -37,7 +37,13 @@ struct evcount stat_count;
>  u_int tb_get_timecount(struct timecounter *);
>  
>  static struct timecounter tb_timecounter = {
> - tb_get_timecount, NULL, 0xffffffff, 0, "tb", 0, NULL
> + .tc_get_timecount = tb_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = "tb",
> + .tc_quality = 0,
> + .tc_priv = NULL,
>  };
>  
>  void cpu_startclock(void);
> Index: ./dev/pv/hyperv.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pv/hyperv.c,v
> retrieving revision 1.47
> diff -u -p -r1.47 hyperv.c
> --- ./dev/pv/hyperv.c 4 Dec 2020 03:22:46 -0000 1.47
> +++ ./dev/pv/hyperv.c 19 Feb 2021 02:57:56 -0000
> @@ -141,7 +141,14 @@ struct {
>  };
>  
>  struct timecounter hv_timecounter = {
> - hv_gettime, 0, 0xffffffff, 10000000, "hyperv", 9001, NULL, 0
> + .tc_get_timecount = hv_gettime,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 10000000,
> + .tc_name = "hyperv",
> + .tc_quality = 9001,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  struct cfdriver hyperv_cd = {
> Index: ./dev/pv/pvclock.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pv/pvclock.c,v
> retrieving revision 1.6
> diff -u -p -r1.6 pvclock.c
> --- ./dev/pv/pvclock.c 6 Jul 2020 13:33:09 -0000 1.6
> +++ ./dev/pv/pvclock.c 19 Feb 2021 02:57:56 -0000
> @@ -74,7 +74,14 @@ struct cfdriver pvclock_cd = {
>  };
>  
>  struct timecounter pvclock_timecounter = {
> - pvclock_get_timecount, NULL, ~0u, 0, NULL, -2000, NULL, 0
> + .tc_get_timecount = pvclock_get_timecount,
> + .tc_poll_pps = NULL,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = 0,
> + .tc_name = NULL,
> + .tc_quality = -2000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  int
> Index: ./dev/acpi/acpihpet.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/acpi/acpihpet.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 acpihpet.c
> --- ./dev/acpi/acpihpet.c 6 Jul 2020 13:33:08 -0000 1.24
> +++ ./dev/acpi/acpihpet.c 19 Feb 2021 02:57:56 -0000
> @@ -40,14 +40,14 @@ void acpihpet_w(bus_space_tag_t _iot, b
>      bus_size_t _ioa, uint64_t _val);
>  
>  static struct timecounter hpet_timecounter = {
> - acpihpet_gettime, /* get_timecount */
> - 0, /* no poll_pps */
> - 0xffffffff, /* counter_mask (32 bits) */
> - 0, /* frequency */
> - 0, /* name */
> - 1000, /* quality */
> - NULL, /* private bits */
> - 0, /* expose to user */
> + .tc_get_timecount = acpihpet_gettime,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffffff,
> + .tc_frequency = 0,
> + .tc_name = 0,
> + .tc_quality = 1000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  #define HPET_TIMERS 3
> Index: ./dev/acpi/acpitimer.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/acpi/acpitimer.c,v
> retrieving revision 1.13
> diff -u -p -r1.13 acpitimer.c
> --- ./dev/acpi/acpitimer.c 6 Jul 2020 13:33:08 -0000 1.13
> +++ ./dev/acpi/acpitimer.c 19 Feb 2021 02:57:56 -0000
> @@ -31,14 +31,14 @@ void acpitimerattach(struct device *, st
>  u_int acpi_get_timecount(struct timecounter *tc);
>  
>  static struct timecounter acpi_timecounter = {
> - acpi_get_timecount, /* get_timecount */
> - 0, /* no poll_pps */
> - 0x00ffffff, /* counter_mask (24 bits) */
> - ACPI_FREQUENCY, /* frequency */
> - 0, /* name */
> - 1000, /* quality */
> - NULL, /* private bits */
> - 0, /* expose to user */
> + .tc_get_timecount = acpi_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0x00ffffff, /* 24 bits */
> + .tc_frequency = ACPI_FREQUENCY,
> + .tc_name = 0,
> + .tc_quality = 1000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  struct acpitimer_softc {
> Index: ./dev/pci/amdpm.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pci/amdpm.c,v
> retrieving revision 1.36
> diff -u -p -r1.36 amdpm.c
> --- ./dev/pci/amdpm.c 6 Jul 2020 13:33:09 -0000 1.36
> +++ ./dev/pci/amdpm.c 19 Feb 2021 02:57:56 -0000
> @@ -77,14 +77,14 @@ u_int amdpm_get_timecount(struct timecou
>  #endif
>  
>  static struct timecounter amdpm_timecounter = {
> - amdpm_get_timecount, /* get_timecount */
> - 0, /* no poll_pps */
> - 0xffffff, /* counter_mask */
> - AMDPM_FREQUENCY, /* frequency */
> - "AMDPM", /* name */
> - 1000, /* quality */
> - NULL, /* private bits */
> - 0, /* expose to user */
> + .tc_get_timecount = amdpm_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffff,
> + .tc_frequency = AMDPM_FREQUENCY,
> + .tc_name = "AMDPM",
> + .tc_quality = 1000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  #define AMDPM_CONFREG 0x40
> Index: ./dev/pci/viapm.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pci/viapm.c,v
> retrieving revision 1.19
> diff -u -p -r1.19 viapm.c
> --- ./dev/pci/viapm.c 6 Jul 2020 13:33:09 -0000 1.19
> +++ ./dev/pci/viapm.c 19 Feb 2021 02:57:56 -0000
> @@ -172,14 +172,14 @@ u_int viapm_get_timecount(struct timecou
>  #endif
>  
>  static struct timecounter viapm_timecounter = {
> - viapm_get_timecount, /* get_timecount */
> - 0, /* no poll_pps */
> - 0xffffff, /* counter_mask */
> - VIAPM_FREQUENCY, /* frequency */
> - "VIAPM", /* name */
> - 1000, /* quality */
> - NULL, /* private bits */
> - 0, /* expose to user */
> + .tc_get_timecount = viapm_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = 0xffffff,
> + .tc_frequency = VIAPM_FREQUENCY,
> + .tc_name = "VIAPM",
> + .tc_quality = 1000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  struct timeout viapm_timeout;
> Index: ./kern/kern_tc.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/kern_tc.c,v
> retrieving revision 1.70
> diff -u -p -r1.70 kern_tc.c
> --- ./kern/kern_tc.c 5 Dec 2020 04:46:34 -0000 1.70
> +++ ./kern/kern_tc.c 19 Feb 2021 02:57:56 -0000
> @@ -55,7 +55,14 @@ dummy_get_timecount(struct timecounter *
>  }
>  
>  static struct timecounter dummy_timecounter = {
> - dummy_get_timecount, 0, ~0u, 1000000, "dummy", -1000000, NULL, 0
> + .tc_get_timecount = dummy_get_timecount,
> + .tc_poll_pps = 0,
> + .tc_counter_mask = ~0u,
> + .tc_frequency = 1000000,
> + .tc_name = "dummy",
> + .tc_quality = -1000000,
> + .tc_priv = NULL,
> + .tc_user = 0,
>  };
>  
>  /*