return -E_FW_OPEN;
}
-static int file_write_pre_select(struct sched *s, struct writer_node *wn)
-{
- struct private_file_write_data *pfwd = wn->private_data;
- struct writer_node_group *wng = wn->wng;
-
- pfwd->check_fd = 0;
- if (pfwd->fd <= 0)
- return -E_FW_NO_FILE;
- if (!*wng->loaded)
- return 1;
- para_fd_set(pfwd->fd, &s->wfds, &s->max_fileno);
- pfwd->check_fd = 1;
- return 1;
-}
-
static void file_write_pre_select_btr(struct sched *s, struct task *t)
{
struct writer_node *wn = container_of(t, struct writer_node, task);
}
}
-static int file_write_post_select(struct sched *s, struct writer_node *wn)
-{
- struct private_file_write_data *pfwd = wn->private_data;
- struct writer_node_group *wng = wn->wng;
- int ret;
-
- if (!pfwd->check_fd)
- return 1;
- if (*wng->loaded <= wn->written)
- return 1;
- if (!FD_ISSET(pfwd->fd, &s->wfds))
- return 1;
-// PARA_INFO_LOG("writing %zd\n", *wng->loaded);
- ret = write(pfwd->fd, *wng->bufp + wn->written,
- *wng->loaded - wn->written);
- if (ret < 0)
- return -E_FW_WRITE;
- wn->written += ret;
- return 1;
-}
-
static void file_write_close(struct writer_node *wn)
{
struct private_file_write_data *pfwd = wn->private_data;
close(pfwd->fd);
- file_cmdline_parser_free(wn->conf);
free(pfwd);
}
file_cmdline_parser_init(&dummy);
w->open = file_write_open;
- w->pre_select = file_write_pre_select;
w->pre_select_btr = file_write_pre_select_btr;
- w->post_select = file_write_post_select;
w->post_select_btr = file_write_post_select_btr;
w->parse_config = file_write_parse_config;
w->free_config = file_write_free_config;