dlog_logger: refactor QoS distributions
[platform/core/system/dlog.git] / src / logger / qos.h
index 9aee812..650207d 100644 (file)
@@ -25,7 +25,12 @@ struct metrics_pid_aggr_info {
        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;
@@ -36,13 +41,7 @@ struct qos_module {
        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);