diff options
| -rw-r--r-- | kernel/trace/trace_output.c | 26 | 
1 files changed, 18 insertions, 8 deletions
| diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 151f32e5f2c..456be9063c2 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -533,20 +533,30 @@ seq_print_ip_sym(struct trace_seq *s, unsigned long ip, unsigned long sym_flags)   */  int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry)  { -	int hardirq, softirq; +	char hardsoft_irq; +	char need_resched; +	char irqs_off; +	int hardirq; +	int softirq;  	int ret;  	hardirq = entry->flags & TRACE_FLAG_HARDIRQ;  	softirq = entry->flags & TRACE_FLAG_SOFTIRQ; +	irqs_off = +		(entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' : +		(entry->flags & TRACE_FLAG_IRQS_NOSUPPORT) ? 'X' : +		'.'; +	need_resched = +		(entry->flags & TRACE_FLAG_NEED_RESCHED) ? 'N' : '.'; +	hardsoft_irq = +		(hardirq && softirq) ? 'H' : +		hardirq ? 'h' : +		softirq ? 's' : +		'.'; +  	if (!trace_seq_printf(s, "%c%c%c", -			      (entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' : -				(entry->flags & TRACE_FLAG_IRQS_NOSUPPORT) ? -				  'X' : '.', -			      (entry->flags & TRACE_FLAG_NEED_RESCHED) ? -				'N' : '.', -			      (hardirq && softirq) ? 'H' : -				hardirq ? 'h' : softirq ? 's' : '.')) +			      irqs_off, need_resched, hardsoft_irq))  		return 0;  	if (entry->preempt_count) | 
