X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=filter_common.c;h=7966b806f0745bfc6d35b630693ef31e285ac3a8;hb=f192fc3c0f824b951c4cb275d7b54b2651de7e8e;hp=add788a8f30465251ff111822b7131cd2e94054b;hpb=e5de57de1b8bf1df96c152fc92f5a49f75d6d96c;p=paraslash.git diff --git a/filter_common.c b/filter_common.c index add788a8..7966b806 100644 --- a/filter_common.c +++ b/filter_common.c @@ -67,11 +67,11 @@ const char *filter_name(int filter_num) * filter, optionally followed by options for this filter. If yes, call the * command line parser of that filter and its ->setup method. * - * \return This function either succeeds or does not return. On success, the - * number of the filter is returned and conf is initialized to point to the - * filter configuration as returned by the filter's ->setup() method, if any. - * Moreover, *lprp is initialized to contain the parsed command line options. - * On errors, the function calls exit(EXIT_FAILURE). + * \return On success, the number of the filter is returned and conf is + * initialized to point to the filter configuration as returned by the filter's + * ->setup() method, if any. Moreover, *lprp is initialized to contain the + * parsed command line options. On errors a negative paraslash error code is + * returned. */ int filter_setup(const char *fa, void **conf, struct lls_parse_result **lprp) { @@ -80,9 +80,10 @@ int filter_setup(const char *fa, void **conf, struct lls_parse_result **lprp) const struct lls_command *cmd; const struct filter *f; + *lprp = NULL; ret = create_argv(fa, " \t\n", &argv); if (ret < 0) - goto fail; + return ret; argc = ret; ret = lls(lls_lookup_subcmd(argv[0], filter_cmd_suite, &errctx)); if (ret < 0) @@ -105,12 +106,10 @@ free_argv: free_argv(argv); if (ret >= 0) return ret; -fail: if (errctx) PARA_ERROR_LOG("%s\n", errctx); free(errctx); - PARA_EMERG_LOG("%s\n", para_strerror(-ret)); - exit(EXIT_FAILURE); + return ret; } /** @@ -169,17 +168,16 @@ void print_filter_list(void) } /** - * Set select timeout of the scheduler. + * Request a minimal timeout if not idle. * - * \param s The scheduler. - * \param context Pointer to the filter node (task context). + * \param s The scheduler instance. + * \param context Pointer to the filter node. * - * This looks at the status of the btr node of the filter. If data is available - * in the input queue of the filter, or if an error occurred, a minimal timeout - * for the next select call is requested from the scheduler. Otherwise the - * scheduler timeout is left unchanged. + * If the buffer tree node of the given filter node has data available (or is + * in error state) a minimal I/O timeout is requested from the scheduler. + * Otherwise the function does nothing. */ -void generic_filter_pre_select(struct sched *s, void *context) +void generic_filter_pre_monitor(struct sched *s, void *context) { struct filter_node *fn = context;