[PATCH 3/3] cpu: maxfreq: use doubles for cpu freqs rather than int

Keng-Yu Lin kengyu at canonical.com
Fri Apr 26 02:46:10 UTC 2013


On Wed, Apr 24, 2013 at 5:25 PM, Colin King <colin.king at canonical.com> wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Use doubles for CPU frequencies, this keeps the code sane from int -> double
> casting.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>  src/cpu/maxfreq/maxfreq.c | 29 ++++++++++++++---------------
>  1 file changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/src/cpu/maxfreq/maxfreq.c b/src/cpu/maxfreq/maxfreq.c
> index 7678333..87df364 100644
> --- a/src/cpu/maxfreq/maxfreq.c
> +++ b/src/cpu/maxfreq/maxfreq.c
> @@ -28,10 +28,10 @@
>  #define CPU_FREQ_PATH  "/sys/devices/system/cpu"
>  #define CPU_INFO_PATH  "/proc/cpuinfo"
>
> -static int maxfreq_max(const char *str)
> +static double maxfreq_max(const char *str)
>  {
> -       int max = -1;
> -       int val;
> +       double max = -1.0;
> +       double val;
>
>         while (str && *str) {
>                 while ((*str != '\0') && isspace(*str))
> @@ -40,7 +40,7 @@ static int maxfreq_max(const char *str)
>                 if (!isdigit(*str))
>                         break;
>
> -               val = atoi(str);
> +               val = atof(str);
>                 if (val > max)
>                         max = val;
>                 str = strstr(str, " ");
> @@ -57,7 +57,7 @@ static int maxfreq_test1(fwts_framework *fw)
>         int cpu;
>         fwts_list_link *item;
>         fwts_list *cpuinfo;
> -       int *cpufreq;
> +       double *cpufreq;
>         int failed = 0;
>         int advice = 0;
>
> @@ -79,7 +79,7 @@ static int maxfreq_test1(fwts_framework *fw)
>                         cpus++;
>         }
>
> -       if ((cpufreq = calloc(cpus, sizeof(int))) == NULL) {
> +       if ((cpufreq = calloc(cpus, sizeof(double))) == NULL) {
>                 fwts_log_error(fw, "Cannot create cpu frequency array.");
>                 return FWTS_ERROR;
>         }
> @@ -90,16 +90,15 @@ static int maxfreq_test1(fwts_framework *fw)
>                 char *str = fwts_text_list_text(item);
>                 if (strstr(str, "model name")) {
>                         if ((str = strstr(str, "@")) != NULL) {
> -                               double freq = atof(str+1);
> +                               cpufreq[cpu] = atof(str+1);
>                                 if (strstr(str, "GHz"))
> -                                       freq *= 1000000.0;
> +                                       cpufreq[cpu] *= 1000000.0;
>                                 if (strstr(str, "MHz"))
> -                                       freq *= 1000.0;
> -                               cpufreq[cpu] = (int)freq;
> +                                       cpufreq[cpu] *= 1000.0;
>                                 cpufreqs_read++;
>                         }
>                         else
> -                               cpufreq[cpu] = -1;
> +                               cpufreq[cpu] = -1.0;
>
>                         cpu++;
>                 }
> @@ -129,17 +128,17 @@ static int maxfreq_test1(fwts_framework *fw)
>                                 CPU_FREQ_PATH "/%s/cpufreq/scaling_available_frequencies",
>                                 entry->d_name);
>                         if ((data = fwts_get(path)) != NULL) {
> -                               int maxfreq = maxfreq_max(data);
> +                               double maxfreq = maxfreq_max(data);
>                                 int cpunum = atoi(entry->d_name + 3);
> -                               if (maxfreq == -1) {
> +                               if (maxfreq < 0.0) {
>                                         fwts_failed(fw, LOG_LEVEL_MEDIUM,
>                                                 "CPUFreqReadFailed",
>                                                 "Cannot read cpu frequency from %s for CPU %s\n",
>                                                 CPU_FREQ_PATH, entry->d_name);
>                                         failed++;
>                                 } else {
> -                                       double maxfreq_ghz = (double)maxfreq/1000000.0;
> -                                       double cpufreq_ghz = (double)cpufreq[cpunum] / 1000000.0;
> +                                       double maxfreq_ghz = maxfreq / 1000000.0;
> +                                       double cpufreq_ghz = cpufreq[cpunum] / 1000000.0;
>
>                                         if (fabs(maxfreq_ghz - cpufreq_ghz) > (maxfreq_ghz * 0.005)) {
>                                                 failed++;
> --
> 1.8.1.2
>
Acked-by: Keng-Yu Lin <kengyu at canonical.com>



More information about the fwts-devel mailing list