.B "#define BTF_T1 ..."
.B "struct bench_timerops {"
.BI " void (*describe)(struct bench_timer *" bt ", dstr *" d );
+.BI " int (*preflight)(struct bench_timer *" bt );
.ta 2n +\w'\fBint (*now)('u
.BI " int (*now)(struct bench_timer *" bt ,
.BI " struct bench_time *" t_out ", unsigned " f );
.IB tm ->ops->describe( tm ", " d)
Write a description of the timer to the dynamic string
.IR d .
+.TPc
+.IB tm ->ops->preflight( tm )
+Ensure that the timer is in working order,
+and perform any necessary per-thread or per-process setup.
+Return zero if the
+.B now
+function is likely to work properly
+when called from the same thread
+in the near future;
+otherwise return \-1.
.TP
.IB tm ->ops->now( tm ", " t_out ", " f )
Store the current time in