int count;
};
+struct qos_module;
+
+typedef void (*qos_distribution_func)(struct qos_module *qos, struct metrics_pid_aggr_info *infos, int count);
+
struct qos_module {
+ qos_distribution_func distribution_func;
struct metrics *log_metrics;
char *file_path;
int max_throughput;
bool currently_limiting;
};
-extern void (*qos_distribution_func)(struct qos_module *qos, struct metrics_pid_aggr_info *infos, int count);
-
-void qos_distribution_equal(struct qos_module *qos, struct metrics_pid_aggr_info *infos, int count);
-void qos_distribution_equal_dual(struct qos_module *qos, struct metrics_pid_aggr_info *infos, int count);
-void qos_distribution_equal_multi(struct qos_module *qos, struct metrics_pid_aggr_info *infos, int count);
-void qos_distribution_proportional_raw(struct qos_module *qos, struct metrics_pid_aggr_info *infos, int count);
-void qos_distribution_proportional_talmud(struct qos_module *qos, struct metrics_pid_aggr_info *infos, int count);
+qos_distribution_func qos_get_distribution_func_by_name(const char *name);
bool qos_is_enabled(const struct qos_module *qos);
void qos_create_limits_file(struct qos_module *qos, bool is_limiting);