X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=file_writer.c;h=4a2e04810fcc9355882c8e0fffd7ef2478a2b820;hp=9145ef9fb7ae24432e7e975af0601e965691e398;hb=9337bed6e84a4068e750fb6597646b45778eeba7;hpb=704605b466aca3ae6ca6d1e03b6af55e3d245502 diff --git a/file_writer.c b/file_writer.c index 9145ef9f..4a2e0481 100644 --- a/file_writer.c +++ b/file_writer.c @@ -68,42 +68,38 @@ static int file_writer_write(char *data, size_t nbytes, struct writer_node *wn) return ret; } -static void file_writer_pre_select(struct sched *s, struct task *t) +static int file_writer_pre_select(struct sched *s, struct writer_node *wn) { - struct writer_node *wn = t->private_data; struct private_file_writer_data *pfwd = wn->private_data; struct writer_node_group *wng = wn->wng; -// PARA_INFO_LOG("task %p check_fd: %d\n", t, pfwd->check_fd); pfwd->check_fd = 0; - t->ret = -E_FW_NO_FILE; if (pfwd->fd <= 0) - return; - t->ret = 0; + return -E_FW_NO_FILE; if (!*wng->loaded) - return; - t->ret = 1; + return 1; para_fd_set(pfwd->fd, &s->wfds, &s->max_fileno); pfwd->check_fd = 1; + return 1; } -static void file_writer_post_select(struct sched *s, struct task *t) +static int file_writer_post_select(struct sched *s, struct writer_node *wn) { - struct writer_node *wn = t->private_data; struct private_file_writer_data *pfwd = wn->private_data; struct writer_node_group *wng = wn->wng; + int ret = 0; - t->ret = 0; if (!pfwd->check_fd) - return; + return 0; if (!*wng->loaded) - return; + return 0; if (!FD_ISSET(pfwd->fd, &s->wfds)) - return; + return 0; // PARA_INFO_LOG("writing %zd\n", *wng->loaded); - t->ret = write(pfwd->fd, wng->buf, *wng->loaded); - if (t->ret < 0) - t->ret = -E_FW_WRITE; + ret = write(pfwd->fd, wng->buf, *wng->loaded); + if (ret < 0) + ret = -E_FW_WRITE; + return ret; } static void file_writer_close(struct writer_node *wn)