Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: ftrace: handle archs that do not support irqs_disabled_flags
This commit is contained in:
commit
147db6e947
@ -291,6 +291,9 @@ explains which is which.
|
|||||||
CPU#: The CPU which the process was running on.
|
CPU#: The CPU which the process was running on.
|
||||||
|
|
||||||
irqs-off: 'd' interrupts are disabled. '.' otherwise.
|
irqs-off: 'd' interrupts are disabled. '.' otherwise.
|
||||||
|
Note: If the architecture does not support a way to
|
||||||
|
read the irq flags variable, an 'X' will always
|
||||||
|
be printed here.
|
||||||
|
|
||||||
need-resched: 'N' task need_resched is set, '.' otherwise.
|
need-resched: 'N' task need_resched is set, '.' otherwise.
|
||||||
|
|
||||||
|
@ -656,7 +656,11 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags,
|
|||||||
entry->preempt_count = pc & 0xff;
|
entry->preempt_count = pc & 0xff;
|
||||||
entry->pid = (tsk) ? tsk->pid : 0;
|
entry->pid = (tsk) ? tsk->pid : 0;
|
||||||
entry->flags =
|
entry->flags =
|
||||||
|
#ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT
|
||||||
(irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) |
|
(irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) |
|
||||||
|
#else
|
||||||
|
TRACE_FLAG_IRQS_NOSUPPORT |
|
||||||
|
#endif
|
||||||
((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) |
|
((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) |
|
||||||
((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) |
|
((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) |
|
||||||
(need_resched() ? TRACE_FLAG_NEED_RESCHED : 0);
|
(need_resched() ? TRACE_FLAG_NEED_RESCHED : 0);
|
||||||
@ -1244,7 +1248,8 @@ lat_print_generic(struct trace_seq *s, struct trace_entry *entry, int cpu)
|
|||||||
trace_seq_printf(s, "%8.8s-%-5d ", comm, entry->pid);
|
trace_seq_printf(s, "%8.8s-%-5d ", comm, entry->pid);
|
||||||
trace_seq_printf(s, "%3d", cpu);
|
trace_seq_printf(s, "%3d", cpu);
|
||||||
trace_seq_printf(s, "%c%c",
|
trace_seq_printf(s, "%c%c",
|
||||||
(entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' : '.',
|
(entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' :
|
||||||
|
(entry->flags & TRACE_FLAG_IRQS_NOSUPPORT) ? 'X' : '.',
|
||||||
((entry->flags & TRACE_FLAG_NEED_RESCHED) ? 'N' : '.'));
|
((entry->flags & TRACE_FLAG_NEED_RESCHED) ? 'N' : '.'));
|
||||||
|
|
||||||
hardirq = entry->flags & TRACE_FLAG_HARDIRQ;
|
hardirq = entry->flags & TRACE_FLAG_HARDIRQ;
|
||||||
|
@ -120,18 +120,20 @@ struct trace_boot {
|
|||||||
/*
|
/*
|
||||||
* trace_flag_type is an enumeration that holds different
|
* trace_flag_type is an enumeration that holds different
|
||||||
* states when a trace occurs. These are:
|
* states when a trace occurs. These are:
|
||||||
* IRQS_OFF - interrupts were disabled
|
* IRQS_OFF - interrupts were disabled
|
||||||
* NEED_RESCED - reschedule is requested
|
* IRQS_NOSUPPORT - arch does not support irqs_disabled_flags
|
||||||
* HARDIRQ - inside an interrupt handler
|
* NEED_RESCED - reschedule is requested
|
||||||
* SOFTIRQ - inside a softirq handler
|
* HARDIRQ - inside an interrupt handler
|
||||||
* CONT - multiple entries hold the trace item
|
* SOFTIRQ - inside a softirq handler
|
||||||
|
* CONT - multiple entries hold the trace item
|
||||||
*/
|
*/
|
||||||
enum trace_flag_type {
|
enum trace_flag_type {
|
||||||
TRACE_FLAG_IRQS_OFF = 0x01,
|
TRACE_FLAG_IRQS_OFF = 0x01,
|
||||||
TRACE_FLAG_NEED_RESCHED = 0x02,
|
TRACE_FLAG_IRQS_NOSUPPORT = 0x02,
|
||||||
TRACE_FLAG_HARDIRQ = 0x04,
|
TRACE_FLAG_NEED_RESCHED = 0x04,
|
||||||
TRACE_FLAG_SOFTIRQ = 0x08,
|
TRACE_FLAG_HARDIRQ = 0x08,
|
||||||
TRACE_FLAG_CONT = 0x10,
|
TRACE_FLAG_SOFTIRQ = 0x10,
|
||||||
|
TRACE_FLAG_CONT = 0x20,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TRACE_BUF_SIZE 1024
|
#define TRACE_BUF_SIZE 1024
|
||||||
|
Loading…
Reference in New Issue
Block a user