|
@@ -1262,6 +1262,18 @@ static struct {
|
|
|
{0, NULL}
|
|
|
};
|
|
|
|
|
|
+static const char *sample_flags_to_name(u32 flags)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = 0; sample_flags[i].name ; i++) {
|
|
|
+ if (sample_flags[i].flags == flags)
|
|
|
+ return sample_flags[i].name;
|
|
|
+ }
|
|
|
+
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
+
|
|
|
static int perf_sample__fprintf_flags(u32 flags, FILE *fp)
|
|
|
{
|
|
|
const char *chars = PERF_IP_FLAG_CHARS;
|
|
@@ -1271,11 +1283,20 @@ static int perf_sample__fprintf_flags(u32 flags, FILE *fp)
|
|
|
char str[33];
|
|
|
int i, pos = 0;
|
|
|
|
|
|
- for (i = 0; sample_flags[i].name ; i++) {
|
|
|
- if (sample_flags[i].flags == (flags & ~PERF_IP_FLAG_IN_TX)) {
|
|
|
- name = sample_flags[i].name;
|
|
|
- break;
|
|
|
- }
|
|
|
+ name = sample_flags_to_name(flags & ~PERF_IP_FLAG_IN_TX);
|
|
|
+ if (name)
|
|
|
+ return fprintf(fp, " %-15s%4s ", name, in_tx ? "(x)" : "");
|
|
|
+
|
|
|
+ if (flags & PERF_IP_FLAG_TRACE_BEGIN) {
|
|
|
+ name = sample_flags_to_name(flags & ~(PERF_IP_FLAG_IN_TX | PERF_IP_FLAG_TRACE_BEGIN));
|
|
|
+ if (name)
|
|
|
+ return fprintf(fp, " tr strt %-7s%4s ", name, in_tx ? "(x)" : "");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (flags & PERF_IP_FLAG_TRACE_END) {
|
|
|
+ name = sample_flags_to_name(flags & ~(PERF_IP_FLAG_IN_TX | PERF_IP_FLAG_TRACE_END));
|
|
|
+ if (name)
|
|
|
+ return fprintf(fp, " tr end %-7s%4s ", name, in_tx ? "(x)" : "");
|
|
|
}
|
|
|
|
|
|
for (i = 0; i < n; i++, flags >>= 1) {
|
|
@@ -1288,10 +1309,7 @@ static int perf_sample__fprintf_flags(u32 flags, FILE *fp)
|
|
|
}
|
|
|
str[pos] = 0;
|
|
|
|
|
|
- if (name)
|
|
|
- return fprintf(fp, " %-7s%4s ", name, in_tx ? "(x)" : "");
|
|
|
-
|
|
|
- return fprintf(fp, " %-11s ", str);
|
|
|
+ return fprintf(fp, " %-19s ", str);
|
|
|
}
|
|
|
|
|
|
struct printer_data {
|