+err:
+ if (t->error < 0)
+ btr_del_node(cwt->btrn);
+}
+
+static void initial_delay_pre_select(struct sched *s, struct task *t)
+{
+ struct initial_delay_task *idt = container_of(t, struct initial_delay_task, task);
+ struct timeval diff;
+
+ if (!idt->start_time.tv_sec && !idt->start_time.tv_usec) {
+ t->error = -E_NO_DELAY;
+ goto register_check_wav;
+ }
+ if (tv_diff(now, &idt->start_time, &diff) > 0) {
+ t->error = -E_DELAY_TIMEOUT;
+ goto register_check_wav;
+ }
+ if (tv_diff(&s->timeout , &diff, NULL) > 0)
+ s->timeout = diff;
+ return;
+register_check_wav:
+ register_task(&the_check_wav_task.task);
+ s->timeout.tv_sec = 0;
+ s->timeout.tv_usec = 1;
+}
+
+static int loglevel;
+INIT_STDERR_LOGGING(loglevel)
+
+static struct writer_node_group *check_args(void)
+{
+ int i, ret = -E_WRITE_SYNTAX;
+ struct writer_node_group *g = NULL;
+ struct initial_delay_task *idt = &the_initial_delay_task;
+
+ loglevel = get_loglevel_by_name(conf.loglevel_arg);