Lines Matching refs:data
86 * timerlat_free_histogram - free runtime data
89 timerlat_free_histogram(struct timerlat_hist_data *data)
94 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
95 if (data->hist[cpu].irq)
96 free(data->hist[cpu].irq);
98 if (data->hist[cpu].thread)
99 free(data->hist[cpu].thread);
101 if (data->hist[cpu].user)
102 free(data->hist[cpu].user);
107 if (data->hist)
108 free(data->hist);
110 free(data);
114 * timerlat_alloc_histogram - alloc runtime data
119 struct timerlat_hist_data *data;
122 data = calloc(1, sizeof(*data));
123 if (!data)
126 data->entries = entries;
127 data->bucket_size = bucket_size;
128 data->nr_cpus = nr_cpus;
131 data->hist = calloc(1, sizeof(*data->hist) * nr_cpus);
132 if (!data->hist)
137 data->hist[cpu].irq = calloc(1, sizeof(*data->hist->irq) * (entries + 1));
138 if (!data->hist[cpu].irq)
141 data->hist[cpu].thread = calloc(1, sizeof(*data->hist->thread) * (entries + 1));
142 if (!data->hist[cpu].thread)
145 data->hist[cpu].user = calloc(1, sizeof(*data->hist->user) * (entries + 1));
146 if (!data->hist[cpu].user)
152 data->hist[cpu].min_irq = ~0;
153 data->hist[cpu].min_thread = ~0;
154 data->hist[cpu].min_user = ~0;
157 return data;
160 timerlat_free_histogram(data);
165 * timerlat_hist_update - record a new timerlat occurent on cpu, updating data
173 struct timerlat_hist_data *data = tool->data;
174 int entries = data->entries;
181 bucket = latency / data->bucket_size;
184 hist = data->hist[cpu].irq;
185 data->hist[cpu].irq_count++;
186 update_min(&data->hist[cpu].min_irq, &latency);
187 update_sum(&data->hist[cpu].sum_irq, &latency);
188 update_max(&data->hist[cpu].max_irq, &latency);
190 hist = data->hist[cpu].thread;
191 data->hist[cpu].thread_count++;
192 update_min(&data->hist[cpu].min_thread, &latency);
193 update_sum(&data->hist[cpu].sum_thread, &latency);
194 update_max(&data->hist[cpu].max_thread, &latency);
196 hist = data->hist[cpu].user;
197 data->hist[cpu].user_count++;
198 update_min(&data->hist[cpu].min_user, &latency);
199 update_sum(&data->hist[cpu].sum_user, &latency);
200 update_max(&data->hist[cpu].max_user, &latency);
214 struct tep_event *event, void *data)
216 struct trace_instance *trace = data;
237 struct timerlat_hist_data *data = tool->data;
256 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
260 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
280 * timerlat_print_summary - print the summary of the hist data to the output
285 struct timerlat_hist_data *data)
295 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
299 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
304 data->hist[cpu].irq_count);
308 data->hist[cpu].thread_count);
312 data->hist[cpu].user_count);
319 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
323 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
328 data->hist[cpu].min_irq);
332 data->hist[cpu].min_thread);
336 data->hist[cpu].min_user);
343 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
347 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
351 if (data->hist[cpu].irq_count)
353 data->hist[cpu].sum_irq / data->hist[cpu].irq_count);
359 if (data->hist[cpu].thread_count)
361 data->hist[cpu].sum_thread / data->hist[cpu].thread_count);
367 if (data->hist[cpu].user_count)
369 data->hist[cpu].sum_user / data->hist[cpu].user_count);
379 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
383 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
388 data->hist[cpu].max_irq);
392 data->hist[cpu].max_thread);
396 data->hist[cpu].max_user);
404 * timerlat_print_stats - print data for all CPUs
409 struct timerlat_hist_data *data = tool->data;
416 for (bucket = 0; bucket < data->entries; bucket++) {
421 bucket * data->bucket_size);
423 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
427 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
431 total += data->hist[cpu].irq[bucket];
433 data->hist[cpu].irq[bucket]);
437 total += data->hist[cpu].thread[bucket];
439 data->hist[cpu].thread[bucket]);
443 total += data->hist[cpu].user[bucket];
445 data->hist[cpu].user[bucket]);
463 for (cpu = 0; cpu < data->nr_cpus; cpu++) {
467 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count)
472 data->hist[cpu].irq[data->entries]);
476 data->hist[cpu].thread[data->entries]);
480 data->hist[cpu].user[data->entries]);
486 timerlat_print_summary(params, trace, data);
519 " -n/--nano: display data in nanoseconds",
574 /* display data in microseconds */
908 tool->data = timerlat_alloc_histogram(nr_cpus, params->entries, params->bucket_size);
909 if (!tool->data)
1124 timerlat_free_histogram(tool->data);