|
@@ -460,19 +460,23 @@ seq_print_ip_sym(struct trace_seq *s, unsigned long ip, unsigned long sym_flags)
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-lat_print_generic(struct trace_seq *s, struct trace_entry *entry, int cpu)
|
|
|
|
|
|
+/**
|
|
|
|
+ * trace_print_lat_fmt - print the irq, preempt and lockdep fields
|
|
|
|
+ * @s: trace seq struct to write to
|
|
|
|
+ * @entry: The trace entry field from the ring buffer
|
|
|
|
+ *
|
|
|
|
+ * Prints the generic fields of irqs off, in hard or softirq, preempt
|
|
|
|
+ * count and lock depth.
|
|
|
|
+ */
|
|
|
|
+int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry)
|
|
{
|
|
{
|
|
int hardirq, softirq;
|
|
int hardirq, softirq;
|
|
- char comm[TASK_COMM_LEN];
|
|
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
- trace_find_cmdline(entry->pid, comm);
|
|
|
|
hardirq = entry->flags & TRACE_FLAG_HARDIRQ;
|
|
hardirq = entry->flags & TRACE_FLAG_HARDIRQ;
|
|
softirq = entry->flags & TRACE_FLAG_SOFTIRQ;
|
|
softirq = entry->flags & TRACE_FLAG_SOFTIRQ;
|
|
|
|
|
|
- if (!trace_seq_printf(s, "%8.8s-%-5d %3d%c%c%c",
|
|
|
|
- comm, entry->pid, cpu,
|
|
|
|
|
|
+ if (!trace_seq_printf(s, "%c%c%c",
|
|
(entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' :
|
|
(entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' :
|
|
(entry->flags & TRACE_FLAG_IRQS_NOSUPPORT) ?
|
|
(entry->flags & TRACE_FLAG_IRQS_NOSUPPORT) ?
|
|
'X' : '.',
|
|
'X' : '.',
|
|
@@ -494,6 +498,20 @@ lat_print_generic(struct trace_seq *s, struct trace_entry *entry, int cpu)
|
|
return trace_seq_putc(s, '.');
|
|
return trace_seq_putc(s, '.');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int
|
|
|
|
+lat_print_generic(struct trace_seq *s, struct trace_entry *entry, int cpu)
|
|
|
|
+{
|
|
|
|
+ char comm[TASK_COMM_LEN];
|
|
|
|
+
|
|
|
|
+ trace_find_cmdline(entry->pid, comm);
|
|
|
|
+
|
|
|
|
+ if (!trace_seq_printf(s, "%8.8s-%-5d %3d",
|
|
|
|
+ comm, entry->pid, cpu))
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
|
|
+ return trace_print_lat_fmt(s, entry);
|
|
|
|
+}
|
|
|
|
+
|
|
static unsigned long preempt_mark_thresh = 100;
|
|
static unsigned long preempt_mark_thresh = 100;
|
|
|
|
|
|
static int
|
|
static int
|