]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - server.c
task_register() conversion: signal task
[paraslash.git] / server.c
index ab7c3c1ba7299dcdb9c237f0b65e63e5f82d7147..1d67b8b8f503bcaad721371b01c3ef07c6dd7e81 100644 (file)
--- a/server.c
+++ b/server.c
@@ -237,7 +237,7 @@ out:
 
 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);
 }
 
@@ -312,10 +312,6 @@ static void init_signal_task(void)
        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);
@@ -324,7 +320,13 @@ static void init_signal_task(void)
        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)