-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;
-}
-
-INIT_STDERR_LOGGING(conf.loglevel_arg)
-
-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;
-
- if (conf.start_time_given) {
- long unsigned sec, usec;
- if (sscanf(conf.start_time_arg, "%lu:%lu",
- &sec, &usec) != 2)
- goto out;
- idt->start_time.tv_sec = sec;
- idt->start_time.tv_usec = usec;
- }
- if (!conf.writer_given) {
- g = setup_default_wng();
- ret = 1;
- goto out;
- }
- g = wng_new(conf.writer_given);
- ret = -E_WRITE_SYNTAX;
- for (i = 0; i < conf.writer_given; i++) {
- int writer_num;
- g->writer_nodes[i].conf = check_writer_arg(
- conf.writer_arg[i], &writer_num);
- if (!g->writer_nodes[i].conf)
- goto out;
- g->writer_nodes[i].writer = &writers[writer_num];
- }
- ret = 1;
-out:
- if (ret > 0)
- return g;
- free(g);
- return NULL;
-}