int get_pass_table(struct pass_policy *policy, char *pass_conf_path)
{
int ret;
+ int level;
policy->state = PASS_UNUSED;
policy->scenario.state = PASS_UNUSED;
+ policy->state = 0;
+ policy->gov_type = 0;
+ policy->num_levels = 0;
+ policy->min_level = 0;
+ policy->max_level = 0;
+ policy->num_pass_cpu_stats = 0;
+ policy->pass_cpu_threshold = 0;
+ policy->up_threshold = 0;
+ policy->down_threshold = 0;
+ policy->init_level = 0;
+ policy->level_up_threshold = 0;
+ policy->gov_timeout = 0;
+ policy->last_time = 0;
+
+ for (level = 0; level < policy->num_levels; level++) {
+ policy->pass_table[level].limit_max_freq = 0;
+ policy->pass_table[level].limit_max_cpu = 0;
+ policy->pass_table[level].gov_timeout = 0;
+
+ policy->pass_table[level].num_down_cond = 0;
+ policy->pass_table[level].down_cond[0].freq = 0;
+ policy->pass_table[level].down_cond[0].nr_running = 0;
+ policy->pass_table[level].down_cond[0].busy_cpu = 0;
+
+ policy->pass_table[level].num_up_cond = 0;
+ policy->pass_table[level].up_cond[0].freq = 0;
+ policy->pass_table[level].up_cond[0].nr_running = 0;
+ policy->pass_table[level].up_cond[0].busy_cpu = 0;
+
+ policy->pass_table[level].num_left_cond = 0;
+ policy->pass_table[level].left_cond[0].freq = 0;
+ policy->pass_table[level].left_cond[0].nr_running = 0;
+ policy->pass_table[level].left_cond[0].busy_cpu = 0;
+
+ policy->pass_table[level].num_right_cond = 0;
+ policy->pass_table[level].right_cond[0].freq = 0;
+ policy->pass_table[level].right_cond[0].nr_running = 0;
+ policy->pass_table[level].right_cond[0].busy_cpu = 0;
+ }
+
ret = config_parse(pass_conf_path, pass_load_config, policy);
if (ret < 0) {
_E("cannot parse %s\n", pass_conf_path);
return -EINVAL;
}
+ /*
+ _I("%d| policy->state : %d\n",
+ policy->cluster.id, policy->state);
+ _I("%d| policy->gov_type : %d\n",
+ policy->cluster.id, policy->gov_type);
+ _I("%d| policy->num_levels : %d\n",
+ policy->cluster.id, policy->num_levels);
+ _I("%d| policy->min_level : %d\n",
+ policy->cluster.id, policy->min_level);
+ _I("%d| policy->max_level : %d\n",
+ policy->cluster.id, policy->max_level);
+ _I("%d| policy->num_pass_cpu_stats : %d\n",
+ policy->cluster.id, policy->num_pass_cpu_stats);
+ _I("%d| policy->pass_cpu_threshold : %d\n",
+ policy->cluster.id, policy->pass_cpu_threshold);
+ _I("%d| policy->up_threshold : %d\n",
+ policy->cluster.id, policy->up_threshold);
+ _I("%d| policy->down_threshold : %d\n",
+ policy->cluster.id, policy->down_threshold);
+ _I("%d| policy->init_level : %d\n",
+ policy->cluster.id, policy->init_level);
+ _I("%d| policy->level_up_threshold : %d\n",
+ policy->cluster.id, policy->level_up_threshold);
+ _I("%d| policy->gov_timeout : %f\n",
+ policy->cluster.id, policy->gov_timeout);
+
+ for (level = 0; level < policy->num_levels; level++) {
+ _I("================================================\n");
+ _I("%d| policy->pass_table[%d].limit_max_freq : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].limit_max_freq);
+ _I("%d| policy->pass_table[%d].limit_max_cpu : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].limit_max_cpu);
+ _I("%d| policy->pass_table[%d].gov_timeout : %f\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].gov_timeout);
+
+ _I("%d| policy->pass_table[%d].num_down_cond : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].num_down_cond);
+ _I("%d| policy->pass_table[%d].down_cond[0].freq : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].down_cond[0].freq);
+ _I("%d| policy->pass_table[%d].down_cond[0].nr_running : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].down_cond[0].nr_running);
+ _I("%d| policy->pass_table[%d].down_cond[0].busy_cpu : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].down_cond[0].busy_cpu);
+
+ _I("%d| policy->pass_table[%d].num_up_cond : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].num_up_cond);
+ _I("%d| policy->pass_table[%d].up_cond[0].freq : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].up_cond[0].freq);
+ _I("%d| policy->pass_table[%d].up_cond[0].nr_running : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].up_cond[0].nr_running);
+ _I("%d| policy->pass_table[%d].up_cond[0].busy_cpu : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].up_cond[0].busy_cpu);
+
+ _I("%d| policy->pass_table[%d].num_left_cond : %d\n",
+ policy->cluster.id, level,
+ policy->pass_table[level].num_left_cond);
+ _I("%d| policy->pass_table[%d].left_cond[0].freq : %d\n",
+ policy->cluster.id, level, policy->pass_table[level].left_cond[0].freq);
+ _I("%d| policy->pass_table[%d].left_cond[0].nr_running : %d\n",
+ policy->cluster.id, level, policy->pass_table[level].left_cond[0].nr_running);
+ _I("%d| policy->pass_table[%d].left_cond[0].busy_cpu : %d\n",
+ policy->cluster.id, level, policy->pass_table[level].left_cond[0].busy_cpu);
+
+ _I("%d| policy->pass_table[%d].num_right_cond : %d\n",
+ policy->cluster.id, level, policy->pass_table[level].num_right_cond);
+ _I("%d| policy->pass_table[%d].right_cond[0].freq : %d\n",
+ policy->cluster.id, level, policy->pass_table[level].right_cond[0].freq);
+ _I("%d| policy->pass_table[%d].right_cond[0].nr_running : %d\n",
+ policy->cluster.id, level, policy->pass_table[level].right_cond[0].nr_running);
+ _I("%d| policy->pass_table[%d].right_cond[0].busy_cpu : %d\n",
+ policy->cluster.id, level, policy->pass_table[level].right_cond[0].busy_cpu);
+ }
+ */
+
if (policy->state == PASS_UNUSED)
return -EINVAL;