perf tools: Add fprintf methods for thread_map and cpu_map classes
For helping with debugging. Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-m06n4rp7pwr6dlzwoq89cl69@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
172d1b0b73
commit
9ae7d3351a
4 changed files with 30 additions and 0 deletions
|
@ -166,6 +166,17 @@ out:
|
||||||
return cpus;
|
return cpus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
size_t printed = fprintf(fp, "%d cpu%s: ",
|
||||||
|
map->nr, map->nr > 1 ? "s" : "");
|
||||||
|
for (i = 0; i < map->nr; ++i)
|
||||||
|
printed += fprintf(fp, "%s%d", i ? ", " : "", map->map[i]);
|
||||||
|
|
||||||
|
return printed + fprintf(fp, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
struct cpu_map *cpu_map__dummy_new(void)
|
struct cpu_map *cpu_map__dummy_new(void)
|
||||||
{
|
{
|
||||||
struct cpu_map *cpus = malloc(sizeof(*cpus) + sizeof(int));
|
struct cpu_map *cpus = malloc(sizeof(*cpus) + sizeof(int));
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef __PERF_CPUMAP_H
|
#ifndef __PERF_CPUMAP_H
|
||||||
#define __PERF_CPUMAP_H
|
#define __PERF_CPUMAP_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
struct cpu_map {
|
struct cpu_map {
|
||||||
int nr;
|
int nr;
|
||||||
int map[];
|
int map[];
|
||||||
|
@ -10,4 +12,6 @@ struct cpu_map *cpu_map__new(const char *cpu_list);
|
||||||
struct cpu_map *cpu_map__dummy_new(void);
|
struct cpu_map *cpu_map__dummy_new(void);
|
||||||
void cpu_map__delete(struct cpu_map *map);
|
void cpu_map__delete(struct cpu_map *map);
|
||||||
|
|
||||||
|
size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp);
|
||||||
|
|
||||||
#endif /* __PERF_CPUMAP_H */
|
#endif /* __PERF_CPUMAP_H */
|
||||||
|
|
|
@ -62,3 +62,14 @@ void thread_map__delete(struct thread_map *threads)
|
||||||
{
|
{
|
||||||
free(threads);
|
free(threads);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t thread_map__fprintf(struct thread_map *threads, FILE *fp)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
size_t printed = fprintf(fp, "%d thread%s: ",
|
||||||
|
threads->nr, threads->nr > 1 ? "s" : "");
|
||||||
|
for (i = 0; i < threads->nr; ++i)
|
||||||
|
printed += fprintf(fp, "%s%d", i ? ", " : "", threads->map[i]);
|
||||||
|
|
||||||
|
return printed + fprintf(fp, "\n");
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define __PERF_THREAD_MAP_H
|
#define __PERF_THREAD_MAP_H
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
struct thread_map {
|
struct thread_map {
|
||||||
int nr;
|
int nr;
|
||||||
|
@ -12,4 +13,7 @@ struct thread_map *thread_map__new_by_pid(pid_t pid);
|
||||||
struct thread_map *thread_map__new_by_tid(pid_t tid);
|
struct thread_map *thread_map__new_by_tid(pid_t tid);
|
||||||
struct thread_map *thread_map__new(pid_t pid, pid_t tid);
|
struct thread_map *thread_map__new(pid_t pid, pid_t tid);
|
||||||
void thread_map__delete(struct thread_map *threads);
|
void thread_map__delete(struct thread_map *threads);
|
||||||
|
|
||||||
|
size_t thread_map__fprintf(struct thread_map *threads, FILE *fp);
|
||||||
|
|
||||||
#endif /* __PERF_THREAD_MAP_H */
|
#endif /* __PERF_THREAD_MAP_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue