aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--idlestat.c2
-rw-r--r--idlestat.h2
-rw-r--r--trace_ops.h2
-rw-r--r--tracefile_idlestat.c24
-rw-r--r--tracefile_tracecmd.c5
5 files changed, 18 insertions, 17 deletions
diff --git a/idlestat.c b/idlestat.c
index 1e4cfcf..9c5d784 100644
--- a/idlestat.c
+++ b/idlestat.c
@@ -943,7 +943,7 @@ void output_cstate_info(FILE *f, int nrcpus) {
#define TRACECMD_REPORT_FORMAT "%*[^]]] %lf:%*[^=]=%u%*[^=]=%d"
#define TRACE_FORMAT "%*[^]]] %*s %lf:%*[^=]=%u%*[^=]=%d"
-int get_wakeup_irq(struct cpuidle_datas *datas, char *buffer, int count)
+int get_wakeup_irq(struct cpuidle_datas *datas, char *buffer)
{
int cpu, irqid;
char irqname[NAMELEN+1];
diff --git a/idlestat.h b/idlestat.h
index 966c762..e030f6a 100644
--- a/idlestat.h
+++ b/idlestat.h
@@ -192,6 +192,6 @@ extern int store_data(double time, int state, int cpu, struct cpuidle_datas *dat
extern struct cpuidle_cstates *build_cstate_info(int nrcpus);
extern struct cpufreq_pstates *build_pstate_info(int nrcpus);
extern int cpu_change_pstate(struct cpuidle_datas *datas, int cpu, unsigned int freq, double time);
-extern int get_wakeup_irq(struct cpuidle_datas *datas, char *buffer, int count);
+extern int get_wakeup_irq(struct cpuidle_datas *datas, char *buffer);
#endif
diff --git a/trace_ops.h b/trace_ops.h
index d65b4a7..6d097ff 100644
--- a/trace_ops.h
+++ b/trace_ops.h
@@ -36,7 +36,7 @@ struct trace_ops {
struct cpuidle_datas *(*load)(const char *filename);
};
-extern int load_text_data_line(char *buffer, struct cpuidle_datas *datas, char *format, double *begin, double *end, size_t *count, size_t *start);
+extern int load_text_data_line(char *buffer, struct cpuidle_datas *datas, char *format, double *begin, double *end, size_t *start);
extern void load_text_data_lines(FILE *f, char *buffer, struct cpuidle_datas *datas);
#define EXPORT_TRACE_OPS(tracetype_name) \
diff --git a/tracefile_idlestat.c b/tracefile_idlestat.c
index 6067bfa..45b3b93 100644
--- a/tracefile_idlestat.c
+++ b/tracefile_idlestat.c
@@ -113,11 +113,10 @@ static struct cpuidle_cstates *load_and_build_cstate_info(FILE* f, char *buffer,
return cstates;
}
-int load_text_data_line(char *buffer, struct cpuidle_datas *datas, char *format, double *begin, double *end, size_t *count, size_t *start)
+int load_text_data_line(char *buffer, struct cpuidle_datas *datas, char *format, double *begin, double *end, size_t *start)
{
unsigned int state, freq, cpu;
double time;
- int ret;
if (strstr(buffer, "cpu_idle")) {
if (sscanf(buffer, format, &time, &state, &cpu)
@@ -134,24 +133,20 @@ int load_text_data_line(char *buffer, struct cpuidle_datas *datas, char *format,
}
*end = time;
- store_data(time, state, cpu, datas);
- (*count)++;
- return 0;
- } else if (strstr(buffer, "cpu_frequency")) {
+ return store_data(time, state, cpu, datas);
+ }
+
+ if (strstr(buffer, "cpu_frequency")) {
if (sscanf(buffer, format, &time, &freq, &cpu) != 3) {
fprintf(stderr, "warning: Unrecognized cpufreq "
"record. The result of analysis might "
"be wrong.\n");
return -1;
}
- cpu_change_pstate(datas, cpu, freq, time);
- (*count)++;
- return 0;
+ return cpu_change_pstate(datas, cpu, freq, time);
}
- ret = get_wakeup_irq(datas, buffer, *count);
- *count += (0 == ret) ? 1 : 0;
- return 0;
+ return get_wakeup_irq(datas, buffer);
}
void load_text_data_lines(FILE *f, char *buffer, struct cpuidle_datas *datas)
@@ -162,7 +157,10 @@ void load_text_data_lines(FILE *f, char *buffer, struct cpuidle_datas *datas)
setup_topo_states(datas);
do {
- load_text_data_line(buffer, datas, TRACE_FORMAT, &begin, &end, &count, &start);
+ if (load_text_data_line(buffer, datas, TRACE_FORMAT,
+ &begin, &end, &start) != -1) {
+ count++;
+ }
} while (fgets(buffer, BUFSIZE, f));
fprintf(stderr, "Log is %lf secs long with %zd events\n",
diff --git a/tracefile_tracecmd.c b/tracefile_tracecmd.c
index b39c9d2..8938f23 100644
--- a/tracefile_tracecmd.c
+++ b/tracefile_tracecmd.c
@@ -45,7 +45,10 @@ void tracecmd_load_text_data_lines(FILE *f, char *buffer, struct cpuidle_datas *
setup_topo_states(datas);
do {
- load_text_data_line(buffer, datas, TRACE_CMD_REPORT_FORMAT, &begin, &end, &count, &start);
+ if (load_text_data_line(buffer, datas, TRACE_CMD_REPORT_FORMAT,
+ &begin, &end, &start) != -1) {
+ count++;
+ }
} while (fgets(buffer, BUFSIZE, f));
fprintf(stderr, "Log is %lf secs long with %zd events\n",