Patch to fix some minor issues in idlestat tool - - use USEC_PER_SEC instead of hardcoded value - replace 'f' with 'stderr' - check for root only if idlestat is run in trace mode - increase MAXCSTATE & MAXPSTATE to 16 as per Daniel's suggestion. Needs to be dynamically determined in future.
diff --git a/idlestat.c b/idlestat.c index 787d7b0..e9f556b 100644 --- a/idlestat.c +++ b/idlestat.c @@ -47,6 +47,7 @@ #include "topology.h" #define IDLESTAT_VERSION "0.3" +#define USEC_PER_SEC 1000000 static char irq_type_name[][8] = { "irq", @@ -193,7 +194,7 @@ static struct cpuidle_data *intersection(struct cpuidle_data *data1, data->begin = begin; data->end = end; data->duration = end - begin; - data->duration *= 1000000; + data->duration *= USEC_PER_SEC; return data; } @@ -510,7 +511,6 @@ static void open_next_pstate(struct cpufreq_pstates *ps, int s, double time) open_current_pstate(ps, time); } -#define USEC_PER_SEC 1000000 static void close_current_pstate(struct cpufreq_pstates *ps, double time) { int c = ps->current; @@ -617,7 +617,7 @@ static int store_data(double time, int state, int cpu, return 0; /* convert to us */ - data->duration *= 1000000; + data->duration *= USEC_PER_SEC; cstate->min_time = MIN(cstate->min_time, data->duration); @@ -1110,7 +1110,7 @@ static int idlestat_store(const char *path) f = fopen(path, "w+"); if (!f) { - fprintf(f, "%s: failed to open '%s': %m\n", __func__, path); + fprintf(stderr, "%s: failed to open '%s': %m\n", __func__, path); return -1; } @@ -1230,7 +1230,7 @@ int main(int argc, char *argv[], char *const envp[]) return 1; /* We have to manipulate some files only accessible to root */ - if (getuid()) { + if ((options.mode == TRACE) && getuid()) { fprintf(stderr, "must be root to run the tool\n"); return -1; } diff --git a/idlestat.h b/idlestat.h index 74238ff..1977ab4 100644 --- a/idlestat.h +++ b/idlestat.h @@ -29,8 +29,8 @@ #define BUFSIZE 256 #define NAMELEN 16 -#define MAXCSTATE 8 -#define MAXPSTATE 8 +#define MAXCSTATE 16 +#define MAXPSTATE 16 #define MAX(A, B) (A > B ? A : B) #define MIN(A, B) (A < B ? A : B) #define AVG(A, B, I) ((A) + ((B - A) / (I))) _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev