static void signal_pre_select(struct sched *s, struct task *t)
{
- struct signal_task *st = container_of(t, struct signal_task, task);
+ struct signal_task *st = task_context(t);
para_fd_set(st->fd, &s->rfds, &s->max_fileno);
}
static struct signal_task signal_task_struct,
*st = &signal_task_struct;
- st->task.pre_select = signal_pre_select;
- st->task.post_select = signal_post_select;
- sprintf(st->task.status, "signal task");
-
PARA_NOTICE_LOG("setting up signal handling\n");
st->fd = para_signal_init(); /* always successful */
para_install_sighandler(SIGINT);
para_install_sighandler(SIGCHLD);
para_sigaction(SIGPIPE, SIG_IGN);
add_close_on_fork_list(st->fd);
- register_task(&sched, &st->task);
+ st->task = task_register(&(struct task_info) {
+ .name = "signal",
+ .pre_select = signal_pre_select,
+ .post_select = signal_post_select,
+ .context = st,
+
+ }, &sched);
}
static void command_pre_select(struct sched *s, struct task *t)