-struct cmd_show_cpu_freq_mask_result {
- cmdline_fixed_string_t show_cpu_freq_mask;
- uint64_t core_mask;
-};
-
-static void
-cmd_show_cpu_freq_mask_parsed(void *parsed_result, struct cmdline *cl,
- __attribute__((unused)) void *data)
-{
- struct cmd_show_cpu_freq_mask_result *res = parsed_result;
- unsigned i;
- uint64_t mask = res->core_mask;
- uint32_t freq;
-
- for (i = 0; mask; mask &= ~(1ULL << i++)) {
- if ((mask >> i) & 1) {
- freq = power_manager_get_current_frequency(i);
- if (freq > 0)
- cmdline_printf(cl, "Core %u: %"PRId32"\n", i, freq);
- }
- }
-}
-
-cmdline_parse_token_string_t cmd_show_cpu_freq_mask =
- TOKEN_STRING_INITIALIZER(struct cmd_show_cpu_freq_mask_result,
- show_cpu_freq_mask, "show_cpu_freq_mask");
-cmdline_parse_token_num_t cmd_show_cpu_freq_mask_core_mask =
- TOKEN_NUM_INITIALIZER(struct cmd_show_cpu_freq_mask_result,
- core_mask, UINT64);
-
-cmdline_parse_inst_t cmd_show_cpu_freq_mask_set = {
- .f = cmd_show_cpu_freq_mask_parsed,
- .data = NULL,
- .help_str = "show_cpu_freq_mask <mask>, Get the current frequency for each "
- "core specified in the mask",
- .tokens = {
- (void *)&cmd_show_cpu_freq_mask,
- (void *)&cmd_show_cpu_freq_mask_core_mask,
- NULL,
- },
-};
-
-struct cmd_set_cpu_freq_mask_result {
- cmdline_fixed_string_t set_cpu_freq_mask;
- uint64_t core_mask;
- cmdline_fixed_string_t cmd;
-};
-
-static void
-cmd_set_cpu_freq_mask_parsed(void *parsed_result, struct cmdline *cl,
- __attribute__((unused)) void *data)
-{
- struct cmd_set_cpu_freq_mask_result *res = parsed_result;
- int ret = -1;
-
- if (!strcmp(res->cmd , "up"))
- ret = power_manager_scale_mask_up(res->core_mask);
- else if (!strcmp(res->cmd , "down"))
- ret = power_manager_scale_mask_down(res->core_mask);
- else if (!strcmp(res->cmd , "min"))
- ret = power_manager_scale_mask_min(res->core_mask);
- else if (!strcmp(res->cmd , "max"))
- ret = power_manager_scale_mask_max(res->core_mask);
- if (ret < 0) {
- cmdline_printf(cl, "Error scaling core_mask(0x%"PRIx64") '%s' , not "
- "all cores specified have been scaled\n",
- res->core_mask, res->cmd);
- };
-}
-
-cmdline_parse_token_string_t cmd_set_cpu_freq_mask =
- TOKEN_STRING_INITIALIZER(struct cmd_set_cpu_freq_mask_result,
- set_cpu_freq_mask, "set_cpu_freq_mask");
-cmdline_parse_token_num_t cmd_set_cpu_freq_mask_core_mask =
- TOKEN_NUM_INITIALIZER(struct cmd_set_cpu_freq_mask_result,
- core_mask, UINT64);
-cmdline_parse_token_string_t cmd_set_cpu_freq_mask_result =
- TOKEN_STRING_INITIALIZER(struct cmd_set_cpu_freq_mask_result,
- cmd, "up#down#min#max");
-
-cmdline_parse_inst_t cmd_set_cpu_freq_mask_set = {
- .f = cmd_set_cpu_freq_mask_parsed,
- .data = NULL,
- .help_str = "set_cpu_freq <core_mask> <up|down|min|max>, Set the current "
- "frequency for the cores specified in <core_mask> by scaling "
- "each up/down/min/max.",
- .tokens = {
- (void *)&cmd_set_cpu_freq_mask,
- (void *)&cmd_set_cpu_freq_mask_core_mask,
- (void *)&cmd_set_cpu_freq_mask_result,
- NULL,
- },
-};
-
-
-