On 9/26/19 4:21 PM, Srinivas Pandruvada wrote:
> On Thu, 2019-09-26 at 08:54 -0400, Prarit Bhargava wrote:
>> The current code structure has similar but separate command functions
>> for
>> the enable and disable operations.  This can be improved by adding an
>> int
>> argument to the command function structure, and interpreting 1 as
>> enable
>> and 0 as disable.  This change results in the removal of the disable
>> command functions.
>>
>> Add int argument to the command function structure.
> Does this brings in any significant reduction in data or code size?

It reduces code size.  Right now you have separate functions for enable &
disable.  These are unified into single functions.

P.

> My focus is to add features first which helps users.
> 
> Thanks,
> Srinivas
> 
> 
>>
>> Signed-off-by: Prarit Bhargava <pra...@redhat.com>
>> Cc: Srinivas Pandruvada <srinivas.pandruv...@linux.intel.com>
>> ---
>>  .../x86/intel-speed-select/isst-config.c      | 184 +++++++---------
>> --
>>  1 file changed, 69 insertions(+), 115 deletions(-)
>>
>> diff --git a/tools/power/x86/intel-speed-select/isst-config.c
>> b/tools/power/x86/intel-speed-select/isst-config.c
>> index 2a9890c8395a..9f2798caead9 100644
>> --- a/tools/power/x86/intel-speed-select/isst-config.c
>> +++ b/tools/power/x86/intel-speed-select/isst-config.c
>> @@ -11,7 +11,8 @@
>>  struct process_cmd_struct {
>>      char *feature;
>>      char *command;
>> -    void (*process_fn)(void);
>> +    void (*process_fn)(int arg);
>> +    int arg;
>>  };
>>  
>>  static const char *version_str = "v1.0";
>> @@ -678,7 +679,7 @@ static void exec_on_get_ctdp_cpu(int cpu, void
>> *arg1, void *arg2, void *arg3,
>>  }
>>  
>>  #define _get_tdp_level(desc, suffix, object,
>> help)                                \
>> -    static void
>> get_tdp_##object(void)                                        \
>> +    static void get_tdp_##object(int
>> arg)                                    \
>>      {                                                              
>>            \
>>              struct isst_pkg_ctdp
>> ctdp;                                        \
>>  \
>> @@ -724,7 +725,7 @@ static void dump_isst_config_for_cpu(int cpu,
>> void *arg1, void *arg2,
>>      }
>>  }
>>  
>> -static void dump_isst_config(void)
>> +static void dump_isst_config(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr,
>> @@ -787,7 +788,7 @@ static void set_tdp_level_for_cpu(int cpu, void
>> *arg1, void *arg2, void *arg3,
>>      }
>>  }
>>  
>> -static void set_tdp_level(void)
>> +static void set_tdp_level(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr, "Set Config TDP level\n");
>> @@ -827,7 +828,7 @@ static void dump_pbf_config_for_cpu(int cpu, void
>> *arg1, void *arg2, void *arg3,
>>      }
>>  }
>>  
>> -static void dump_pbf_config(void)
>> +static void dump_pbf_config(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr,
>> @@ -871,43 +872,27 @@ static void set_pbf_for_cpu(int cpu, void
>> *arg1, void *arg2, void *arg3,
>>      }
>>  }
>>  
>> -static void set_pbf_enable(void)
>> -{
>> -    int status = 1;
>> -
>> -    if (cmd_help) {
>> -            fprintf(stderr,
>> -                    "Enable Intel Speed Select Technology base
>> frequency feature [No command arguments are required]\n");
>> -            exit(0);
>> -    }
>> -
>> -    isst_ctdp_display_information_start(outf);
>> -    if (max_target_cpus)
>> -            for_each_online_target_cpu_in_set(set_pbf_for_cpu,
>> NULL, NULL,
>> -                                              NULL, &status);
>> -    else
>> -            for_each_online_package_in_set(set_pbf_for_cpu, NULL,
>> NULL,
>> -                                           NULL, &status);
>> -    isst_ctdp_display_information_end(outf);
>> -}
>> -
>> -static void set_pbf_disable(void)
>> +static void set_pbf_enable(int arg)
>>  {
>> -    int status = 0;
>> +    int enable = arg;
>>  
>>      if (cmd_help) {
>> -            fprintf(stderr,
>> -                    "Disable Intel Speed Select Technology base
>> frequency feature [No command arguments are required]\n");
>> +            if (enable)
>> +                    fprintf(stderr,
>> +                            "Enable Intel Speed Select Technology
>> base frequency feature [No command arguments are required]\n");
>> +            else
>> +                    fprintf(stderr,
>> +                            "Disable Intel Speed Select Technology
>> base frequency feature [No command arguments are required]\n");
>>              exit(0);
>>      }
>>  
>>      isst_ctdp_display_information_start(outf);
>>      if (max_target_cpus)
>>              for_each_online_target_cpu_in_set(set_pbf_for_cpu,
>> NULL, NULL,
>> -                                              NULL, &status);
>> +                                              NULL, &enable);
>>      else
>>              for_each_online_package_in_set(set_pbf_for_cpu, NULL,
>> NULL,
>> -                                           NULL, &status);
>> +                                           NULL, &enable);
>>      isst_ctdp_display_information_end(outf);
>>  }
>>  
>> @@ -925,7 +910,7 @@ static void dump_fact_config_for_cpu(int cpu,
>> void *arg1, void *arg2,
>>                                            fact_avx, &fact_info);
>>  }
>>  
>> -static void dump_fact_config(void)
>> +static void dump_fact_config(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr,
>> @@ -985,35 +970,17 @@ static void set_fact_for_cpu(int cpu, void
>> *arg1, void *arg2, void *arg3,
>>      }
>>  }
>>  
>> -static void set_fact_enable(void)
>> +static void set_fact_enable(int arg)
>>  {
>> -    int status = 1;
>> +    int enable = arg;
>>  
>>      if (cmd_help) {
>> -            fprintf(stderr,
>> -                    "Enable Intel Speed Select Technology Turbo
>> frequency feature\n");
>> -            fprintf(stderr,
>> -                    "Optional: -t|--trl : Specify turbo ratio
>> limit\n");
>> -            exit(0);
>> -    }
>> -
>> -    isst_ctdp_display_information_start(outf);
>> -    if (max_target_cpus)
>> -            for_each_online_target_cpu_in_set(set_fact_for_cpu,
>> NULL, NULL,
>> -                                              NULL, &status);
>> -    else
>> -            for_each_online_package_in_set(set_fact_for_cpu, NULL,
>> NULL,
>> -                                           NULL, &status);
>> -    isst_ctdp_display_information_end(outf);
>> -}
>> -
>> -static void set_fact_disable(void)
>> -{
>> -    int status = 0;
>> -
>> -    if (cmd_help) {
>> -            fprintf(stderr,
>> -                    "Disable Intel Speed Select Technology turbo
>> frequency feature\n");
>> +            if (enable)
>> +                    fprintf(stderr,
>> +                            "Enable Intel Speed Select Technology
>> Turbo frequency feature\n");
>> +            else
>> +                    fprintf(stderr,
>> +                            "Disable Intel Speed Select Technology
>> turbo frequency feature\n");
>>              fprintf(stderr,
>>                      "Optional: -t|--trl : Specify turbo ratio
>> limit\n");
>>              exit(0);
>> @@ -1022,10 +989,10 @@ static void set_fact_disable(void)
>>      isst_ctdp_display_information_start(outf);
>>      if (max_target_cpus)
>>              for_each_online_target_cpu_in_set(set_fact_for_cpu,
>> NULL, NULL,
>> -                                              NULL, &status);
>> +                                              NULL, &enable);
>>      else
>>              for_each_online_package_in_set(set_fact_for_cpu, NULL,
>> NULL,
>> -                                           NULL, &status);
>> +                                           NULL, &enable);
>>      isst_ctdp_display_information_end(outf);
>>  }
>>  
>> @@ -1048,19 +1015,25 @@ static void enable_clos_qos_config(int cpu,
>> void *arg1, void *arg2, void *arg3,
>>      }
>>  }
>>  
>> -static void set_clos_enable(void)
>> +static void set_clos_enable(int arg)
>>  {
>> -    int status = 1;
>> +    int enable = arg;
>>  
>>      if (cmd_help) {
>> -            fprintf(stderr, "Enable core-power for a
>> package/die\n");
>> -            fprintf(stderr,
>> -                    "\tClos Enable: Specify priority type with [
>> --priority|-p]\n");
>> -            fprintf(stderr, "\t\t 0: Proportional, 1: Ordered\n");
>> +            if (enable) {
>> +                    fprintf(stderr,
>> +                            "Enable core-power for a
>> package/die\n");
>> +                    fprintf(stderr,
>> +                            "\tClos Enable: Specify priority type
>> with [--priority|-p]\n");
>> +                    fprintf(stderr, "\t\t 0: Proportional, 1:
>> Ordered\n");
>> +            } else {
>> +                    fprintf(stderr,
>> +                            "Disable core-power: [No command
>> arguments are required]\n");
>> +            }
>>              exit(0);
>>      }
>>  
>> -    if (cpufreq_sysfs_present()) {
>> +    if (enable && cpufreq_sysfs_present()) {
>>              fprintf(stderr,
>>                      "cpufreq subsystem and core-power enable will
>> interfere with each other!\n");
>>      }
>> @@ -1068,30 +1041,10 @@ static void set_clos_enable(void)
>>      isst_ctdp_display_information_start(outf);
>>      if (max_target_cpus)
>>              for_each_online_target_cpu_in_set(enable_clos_qos_confi
>> g, NULL,
>> -                                              NULL, NULL, &status);
>> -    else
>> -            for_each_online_package_in_set(enable_clos_qos_config,
>> NULL,
>> -                                           NULL, NULL, &status);
>> -    isst_ctdp_display_information_end(outf);
>> -}
>> -
>> -static void set_clos_disable(void)
>> -{
>> -    int status = 0;
>> -
>> -    if (cmd_help) {
>> -            fprintf(stderr,
>> -                    "Disable core-power: [No command arguments are
>> required]\n");
>> -            exit(0);
>> -    }
>> -
>> -    isst_ctdp_display_information_start(outf);
>> -    if (max_target_cpus)
>> -            for_each_online_target_cpu_in_set(enable_clos_qos_confi
>> g, NULL,
>> -                                              NULL, NULL, &status);
>> +                                              NULL, NULL, &enable);
>>      else
>>              for_each_online_package_in_set(enable_clos_qos_config,
>> NULL,
>> -                                           NULL, NULL, &status);
>> +                                           NULL, NULL, &enable);
>>      isst_ctdp_display_information_end(outf);
>>  }
>>  
>> @@ -1109,7 +1062,7 @@ static void dump_clos_config_for_cpu(int cpu,
>> void *arg1, void *arg2,
>>                                            &clos_config);
>>  }
>>  
>> -static void dump_clos_config(void)
>> +static void dump_clos_config(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr,
>> @@ -1145,7 +1098,7 @@ static void get_clos_info_for_cpu(int cpu, void
>> *arg1, void *arg2, void *arg3,
>>              isst_clos_display_clos_information(cpu, outf, enable,
>> prio_type);
>>  }
>>  
>> -static void dump_clos_info(void)
>> +static void dump_clos_info(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr,
>> @@ -1188,7 +1141,7 @@ static void set_clos_config_for_cpu(int cpu,
>> void *arg1, void *arg2, void *arg3,
>>              isst_display_result(cpu, outf, "core-power", "config",
>> ret);
>>  }
>>  
>> -static void set_clos_config(void)
>> +static void set_clos_config(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr,
>> @@ -1252,7 +1205,7 @@ static void set_clos_assoc_for_cpu(int cpu,
>> void *arg1, void *arg2, void *arg3,
>>              isst_display_result(cpu, outf, "core-power", "assoc",
>> ret);
>>  }
>>  
>> -static void set_clos_assoc(void)
>> +static void set_clos_assoc(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr, "Associate a clos id to a CPU\n");
>> @@ -1286,7 +1239,7 @@ static void get_clos_assoc_for_cpu(int cpu,
>> void *arg1, void *arg2, void *arg3,
>>              isst_clos_display_assoc_information(cpu, outf, clos);
>>  }
>>  
>> -static void get_clos_assoc(void)
>> +static void get_clos_assoc(int arg)
>>  {
>>      if (cmd_help) {
>>              fprintf(stderr, "Get associate clos id to a CPU\n");
>> @@ -1307,26 +1260,27 @@ static void get_clos_assoc(void)
>>  }
>>  
>>  static struct process_cmd_struct isst_cmds[] = {
>> -    { "perf-profile", "get-lock-status", get_tdp_locked },
>> -    { "perf-profile", "get-config-levels", get_tdp_levels },
>> -    { "perf-profile", "get-config-version", get_tdp_version },
>> -    { "perf-profile", "get-config-enabled", get_tdp_enabled },
>> -    { "perf-profile", "get-config-current-level",
>> get_tdp_current_level },
>> -    { "perf-profile", "set-config-level", set_tdp_level },
>> -    { "perf-profile", "info", dump_isst_config },
>> -    { "base-freq", "info", dump_pbf_config },
>> -    { "base-freq", "enable", set_pbf_enable },
>> -    { "base-freq", "disable", set_pbf_disable },
>> -    { "turbo-freq", "info", dump_fact_config },
>> -    { "turbo-freq", "enable", set_fact_enable },
>> -    { "turbo-freq", "disable", set_fact_disable },
>> -    { "core-power", "info", dump_clos_info },
>> -    { "core-power", "enable", set_clos_enable },
>> -    { "core-power", "disable", set_clos_disable },
>> -    { "core-power", "config", set_clos_config },
>> -    { "core-power", "get-config", dump_clos_config },
>> -    { "core-power", "assoc", set_clos_assoc },
>> -    { "core-power", "get-assoc", get_clos_assoc },
>> +    { "perf-profile", "get-lock-status", get_tdp_locked, 0 },
>> +    { "perf-profile", "get-config-levels", get_tdp_levels, 0 },
>> +    { "perf-profile", "get-config-version", get_tdp_version, 0 },
>> +    { "perf-profile", "get-config-enabled", get_tdp_enabled, 0 },
>> +    { "perf-profile", "get-config-current-level",
>> get_tdp_current_level,
>> +     0 },
>> +    { "perf-profile", "set-config-level", set_tdp_level, 0 },
>> +    { "perf-profile", "info", dump_isst_config, 0 },
>> +    { "base-freq", "info", dump_pbf_config, 0 },
>> +    { "base-freq", "enable", set_pbf_enable, 1 },
>> +    { "base-freq", "disable", set_pbf_enable, 0 },
>> +    { "turbo-freq", "info", dump_fact_config, 0 },
>> +    { "turbo-freq", "enable", set_fact_enable, 1 },
>> +    { "turbo-freq", "disable", set_fact_enable, 0 },
>> +    { "core-power", "info", dump_clos_info, 0 },
>> +    { "core-power", "enable", set_clos_enable, 1 },
>> +    { "core-power", "disable", set_clos_enable, 0 },
>> +    { "core-power", "config", set_clos_config, 0 },
>> +    { "core-power", "get-config", dump_clos_config, 0 },
>> +    { "core-power", "assoc", set_clos_assoc, 0 },
>> +    { "core-power", "get-assoc", get_clos_assoc, 0 },
>>      { NULL, NULL, NULL }
>>  };
>>  
>> @@ -1571,7 +1525,7 @@ void process_command(int argc, char **argv)
>>              if (!strcmp(isst_cmds[i].feature, feature) &&
>>                  !strcmp(isst_cmds[i].command, cmd)) {
>>                      parse_cmd_args(argc, optind + 1, argv);
>> -                    isst_cmds[i].process_fn();
>> +                    isst_cmds[i].process_fn(isst_cmds[i].arg);
>>                      matched = 1;
>>                      break;
>>              }
> 

Reply via email to