+void timer_addrel(struct timers *timers, struct timer *t, struct timerel rel)
+{
+ assert(list_node_initted(&t->list));
+
+ t->time = time_to_grains(timemono_add(time_mono(), rel));
+
+#if TIME_HAVE_MONOTONIC
+ assert(t->time >= timers->base);
+#else
+ /* Added in the past? Treat it as imminent. */
+ if (t->time < timers->base)
+ t->time = timers->base;
+#endif
+ if (t->time < timers->first)
+ timers->first = t->time;
+
+ timer_add_raw(timers, t);
+}
+
+void timer_addmono(struct timers *timers, struct timer *t, struct timemono when)