X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=b6901813a5defcd0a8dcee27c3dd97b91034a0d7;hp=b877b649fd877e6efe28f89193d995ec22c40ea3;hb=74a835c7c3b6f4f71fc1f4739f26757dffdf012a;hpb=a284d2903ef9a14f944eae3c14088a42701ca2cf diff --git a/filter.h b/filter.h index b877b649..b6901813 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 */ @@ -95,18 +98,10 @@ struct filter_chain { struct filter_callback { /** All callbacks are organized in a doubly linked list. */ struct list_head node; - /** - * Private data. - * - * May be initialized by the application before registering the callback. This - * pointer is not used by the filter subsystem. It is provided for use within - * the input/output/close callback functions. - */ - void *data; /** * The input callback. * - * In not \p NULL, the filter subsystem calls this function whenever the filter + * If not \p NULL, the filter subsystem calls this function whenever the filter * consumed some or all of its input buffer. A pointer to the buffer of consumed * data, its length and a pointer to the own \a filter_callback structure are passed * to \a input_cb. The input callback is expected to return a negative value on errors. @@ -199,6 +194,10 @@ struct filter { /** The help texts for this filter. */ struct ggo_help help; + + void (*pre_select)(struct sched *s, struct task *t); + void (*post_select)(struct sched *s, struct task *t); + btr_command_handler execute; }; void close_filters(struct filter_chain *fc); @@ -206,6 +205,8 @@ 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); +int prepare_filter_node(struct filter_node *fn); +void generic_filter_pre_select(struct sched *s, struct task *t); static inline void write_int16_host_endian(char *buf, int val) {