]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - filter_common.c
Introduce and use generic_filter_pre_select().
[paraslash.git] / filter_common.c
index 988c357631e38159f1a1a3118c91005d0ca5aca1..56fbd82b6d527a8876020798b1d624120acc11da 100644 (file)
@@ -296,3 +296,18 @@ int prepare_filter_node(struct filter_node *fn)
        btr_merge(btrn, fn->min_iqs);
        return 1;
 }
+
+void generic_filter_pre_select(struct sched *s, struct task *t)
+{
+       struct filter_node *fn = container_of(t, struct filter_node, task);
+       size_t iqs = btr_get_input_queue_size(fn->btrn);
+
+       t->error = 0;
+       if (iqs <= fn->min_iqs)
+               return;
+       if (btr_bytes_pending(fn->btrn) > FILTER_MAX_PENDING)
+               return; /* FIXME, should use reasonable bound on timeout */
+       s->timeout.tv_sec = 0;
+       s->timeout.tv_usec = 1;
+}
+