X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=cad163d89c20a8f8211377decf2c468d638d1dea;hp=15bfaf8cdb0c2533c463fe8272d21e5528b80dbd;hb=8b280eb4e3b4f46a95eef251520bcce3c761c9ad;hpb=b3d637602e6a730a7bc91384c4ef970eeeb3d44c diff --git a/filter.h b/filter.h index 15bfaf8c..cad163d8 100644 --- a/filter.h +++ b/filter.h @@ -32,6 +32,9 @@ struct filter_node { struct list_head callbacks; /** A pointer to the configuration of this instance. */ void *conf; + struct btr_node *btrn; + struct task task; + size_t min_iqs; }; /** Describes one running instance of a chain of filters */ @@ -188,16 +191,27 @@ struct filter { * argv. On failure, a negative paraslash error code must be returned. */ int (*parse_config)(int argc, char **argv, void **config); + void (*free_config)(void *conf); /** The help texts for this filter. */ struct ggo_help help; + void (*pre_select)(struct sched *s, struct task *t); + /** + * Convert (filter) the given data. + * + * Pointer to the converting function of the filter. It should convert as + * input data as possible. On errors, the post_select function is supposed + * to set t->error to a (negative) error code. + */ + void (*post_select)(struct sched *s, struct task *t); + btr_command_handler execute; }; void close_filters(struct filter_chain *fc); void filter_init(void); int check_filter_arg(char *filter_arg, void **conf); -void filter_post_select(__a_unused struct sched *s, struct task *t); void print_filter_helps(int detailed); +void generic_filter_pre_select(struct sched *s, struct task *t); static inline void write_int16_host_endian(char *buf, int val) {