Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 349906
b: refs/heads/master
c: 0698aed
h: refs/heads/master
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo committed Dec 11, 2012
1 parent af89f6f commit bb782a7
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 80 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f77a951826b44b763e4d9fbd2479b6132d2bd7fc
refs/heads/master: 0698aeddcfe0c2514af1d012082665a3bb55d01b
81 changes: 2 additions & 79 deletions trunk/tools/perf/builtin-evlist.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,39 +15,6 @@
#include "util/parse-options.h"
#include "util/session.h"

struct perf_attr_details {
bool freq;
bool verbose;
};

static int comma_printf(bool *first, const char *fmt, ...)
{
va_list args;
int ret = 0;

if (!*first) {
ret += printf(",");
} else {
ret += printf(":");
*first = false;
}

va_start(args, fmt);
ret += vprintf(fmt, args);
va_end(args);
return ret;
}

static int __if_print(bool *first, const char *field, u64 value)
{
if (value == 0)
return 0;

return comma_printf(first, " %s: %" PRIu64, field, value);
}

#define if_print(field) __if_print(&first, #field, pos->attr.field)

static int __cmd_evlist(const char *file_name, struct perf_attr_details *details)
{
struct perf_session *session;
Expand All @@ -57,52 +24,8 @@ static int __cmd_evlist(const char *file_name, struct perf_attr_details *details
if (session == NULL)
return -ENOMEM;

list_for_each_entry(pos, &session->evlist->entries, node) {
bool first = true;

printf("%s", perf_evsel__name(pos));

if (details->verbose || details->freq) {
comma_printf(&first, " sample_freq=%" PRIu64,
(u64)pos->attr.sample_freq);
}

if (details->verbose) {
if_print(type);
if_print(config);
if_print(config1);
if_print(config2);
if_print(size);
if_print(sample_type);
if_print(read_format);
if_print(disabled);
if_print(inherit);
if_print(pinned);
if_print(exclusive);
if_print(exclude_user);
if_print(exclude_kernel);
if_print(exclude_hv);
if_print(exclude_idle);
if_print(mmap);
if_print(comm);
if_print(freq);
if_print(inherit_stat);
if_print(enable_on_exec);
if_print(task);
if_print(watermark);
if_print(precise_ip);
if_print(mmap_data);
if_print(sample_id_all);
if_print(exclude_host);
if_print(exclude_guest);
if_print(__reserved_1);
if_print(wakeup_events);
if_print(bp_type);
if_print(branch_sample_type);
}

putchar('\n');
}
list_for_each_entry(pos, &session->evlist->entries, node)
perf_evsel__fprintf(pos, details, stdout);

perf_session__delete(session);
return 0;
Expand Down
77 changes: 77 additions & 0 deletions trunk/tools/perf/util/evsel.c
Original file line number Diff line number Diff line change
Expand Up @@ -1228,3 +1228,80 @@ u64 perf_evsel__intval(struct perf_evsel *evsel, struct perf_sample *sample,

return 0;
}

static int comma_fprintf(FILE *fp, bool *first, const char *fmt, ...)
{
va_list args;
int ret = 0;

if (!*first) {
ret += fprintf(fp, ",");
} else {
ret += fprintf(fp, ":");
*first = false;
}

va_start(args, fmt);
ret += vfprintf(fp, fmt, args);
va_end(args);
return ret;
}

static int __if_fprintf(FILE *fp, bool *first, const char *field, u64 value)
{
if (value == 0)
return 0;

return comma_fprintf(fp, first, " %s: %" PRIu64, field, value);
}

#define if_print(field) printed += __if_fprintf(fp, &first, #field, evsel->attr.field)

int perf_evsel__fprintf(struct perf_evsel *evsel,
struct perf_attr_details *details, FILE *fp)
{
bool first = true;
int printed = fprintf(fp, "%s", perf_evsel__name(evsel));

if (details->verbose || details->freq) {
printed += comma_fprintf(fp, &first, " sample_freq=%" PRIu64,
(u64)evsel->attr.sample_freq);
}

if (details->verbose) {
if_print(type);
if_print(config);
if_print(config1);
if_print(config2);
if_print(size);
if_print(sample_type);
if_print(read_format);
if_print(disabled);
if_print(inherit);
if_print(pinned);
if_print(exclusive);
if_print(exclude_user);
if_print(exclude_kernel);
if_print(exclude_hv);
if_print(exclude_idle);
if_print(mmap);
if_print(comm);
if_print(freq);
if_print(inherit_stat);
if_print(enable_on_exec);
if_print(task);
if_print(watermark);
if_print(precise_ip);
if_print(mmap_data);
if_print(sample_id_all);
if_print(exclude_host);
if_print(exclude_guest);
if_print(__reserved_1);
if_print(wakeup_events);
if_print(bp_type);
if_print(branch_sample_type);
}

fputc('\n', fp);
return ++printed;
}
8 changes: 8 additions & 0 deletions trunk/tools/perf/util/evsel.h
Original file line number Diff line number Diff line change
Expand Up @@ -243,4 +243,12 @@ static inline bool perf_evsel__is_group_leader(const struct perf_evsel *evsel)
{
return evsel->leader == evsel;
}

struct perf_attr_details {
bool freq;
bool verbose;
};

int perf_evsel__fprintf(struct perf_evsel *evsel,
struct perf_attr_details *details, FILE *fp);
#endif /* __PERF_EVSEL_H */

0 comments on commit bb782a7

Please sign in to comment.