linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] ftrace: add a tracepoint for __raise_softirq_irqoff()
@ 2009-04-27  5:55 Xiao Guangrong
  2009-04-27  6:01 ` Mathieu Desnoyers
  0 siblings, 1 reply; 4+ messages in thread
From: Xiao Guangrong @ 2009-04-27  5:55 UTC (permalink / raw)
  To: mingo, mathieu.desnoyers, fweisbec, rostedt, zhaolei, laijs,
	Li Zefan, tzanussi
  Cc: linux-kernel

From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>

This patch is modified from Mathieu Desnoyers' patch. The original patch
can be found here: 
	http://marc.info/?l=linux-kernel&m=123791201816245&w=2
This tracepoint can trace the time stamp when softirq action is raised. 

Change log for v1 -> v2: 
1: Use TRACE_EVENT instead of DEFINE_TRACE
2: Move the tracepoint from raise_softirq_irqoff() to __raise_softirq_irqoff()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>

---
 include/linux/interrupt.h  |    9 ++++++++-
 include/trace/events/irq.h |   18 ++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 912c52c..86bae89 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -361,7 +361,14 @@ asmlinkage void do_softirq(void);
 asmlinkage void __do_softirq(void);
 extern void open_softirq(int nr, void (*action)(struct softirq_action *));
 extern void softirq_init(void);
-#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
+
+#include <trace/events/irq.h>
+static inline void __raise_softirq_irqoff(unsigned int nr)
+{
+	trace_irq_softirq_raise(nr);
+	or_softirq_pending(1UL << nr);
+}
+
 extern void raise_softirq_irqoff(unsigned int nr);
 extern void raise_softirq(unsigned int nr);
 extern void wakeup_softirqd(void);
diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
index 7686864..2628e08 100644
--- a/include/trace/events/irq.h
+++ b/include/trace/events/irq.h
@@ -90,6 +90,24 @@ TRACE_EVENT(softirq_exit,
 	TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
 );
 
+TRACE_EVENT(irq_softirq_raise,
+
+	TP_PROTO(unsigned int nr),
+
+	TP_ARGS(nr),
+
+	TP_STRUCT__entry(
+		__field(	unsigned int,	nr	)
+	),
+
+	TP_fast_assign(
+		__entry->nr	= nr;
+	),
+
+	TP_printk("softirq=%d action=%s is raised",
+		__entry->nr, softirq_to_name[__entry->nr])
+);
+
 #endif /*  _TRACE_IRQ_H */
 
 /* This part must be outside protection */
-- 
1.6.1.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] ftrace: add a tracepoint for __raise_softirq_irqoff()
  2009-04-27  5:55 [PATCH v2] ftrace: add a tracepoint for __raise_softirq_irqoff() Xiao Guangrong
@ 2009-04-27  6:01 ` Mathieu Desnoyers
  2009-04-27  6:21   ` Xiao Guangrong
  0 siblings, 1 reply; 4+ messages in thread
From: Mathieu Desnoyers @ 2009-04-27  6:01 UTC (permalink / raw)
  To: Xiao Guangrong
  Cc: mingo, fweisbec, rostedt, zhaolei, laijs, Li Zefan, tzanussi,
	linux-kernel

* Xiao Guangrong (xiaoguangrong@cn.fujitsu.com) wrote:
> From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> 
> This patch is modified from Mathieu Desnoyers' patch. The original patch
> can be found here: 
> 	http://marc.info/?l=linux-kernel&m=123791201816245&w=2
> This tracepoint can trace the time stamp when softirq action is raised. 
> 
> Change log for v1 -> v2: 
> 1: Use TRACE_EVENT instead of DEFINE_TRACE
> 2: Move the tracepoint from raise_softirq_irqoff() to __raise_softirq_irqoff()
> 

Hi Xiao,

> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> 
> ---
>  include/linux/interrupt.h  |    9 ++++++++-
>  include/trace/events/irq.h |   18 ++++++++++++++++++
>  2 files changed, 26 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> index 912c52c..86bae89 100644
> --- a/include/linux/interrupt.h
> +++ b/include/linux/interrupt.h
> @@ -361,7 +361,14 @@ asmlinkage void do_softirq(void);
>  asmlinkage void __do_softirq(void);
>  extern void open_softirq(int nr, void (*action)(struct softirq_action *));
>  extern void softirq_init(void);
> -#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
> +
> +#include <trace/events/irq.h>

Includes are usually at the beginning of the files.

Besides that, the patch looks good.

Which tree is it for ? mainline 2.6.30-rc or Ingo's tip tree ?

Working with Ingo on -tip is probably better so the work can be
synchronized with Steven's work more easily.

Thanks a lot !

Mathieu

> +static inline void __raise_softirq_irqoff(unsigned int nr)
> +{
> +	trace_irq_softirq_raise(nr);
> +	or_softirq_pending(1UL << nr);
> +}
> +
>  extern void raise_softirq_irqoff(unsigned int nr);
>  extern void raise_softirq(unsigned int nr);
>  extern void wakeup_softirqd(void);
> diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
> index 7686864..2628e08 100644
> --- a/include/trace/events/irq.h
> +++ b/include/trace/events/irq.h
> @@ -90,6 +90,24 @@ TRACE_EVENT(softirq_exit,
>  	TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
>  );
>  
> +TRACE_EVENT(irq_softirq_raise,
> +
> +	TP_PROTO(unsigned int nr),
> +
> +	TP_ARGS(nr),
> +
> +	TP_STRUCT__entry(
> +		__field(	unsigned int,	nr	)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->nr	= nr;
> +	),
> +
> +	TP_printk("softirq=%d action=%s is raised",
> +		__entry->nr, softirq_to_name[__entry->nr])
> +);
> +
>  #endif /*  _TRACE_IRQ_H */
>  
>  /* This part must be outside protection */
> -- 
> 1.6.1.2
> 

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] ftrace: add a tracepoint for __raise_softirq_irqoff()
  2009-04-27  6:01 ` Mathieu Desnoyers
@ 2009-04-27  6:21   ` Xiao Guangrong
  2009-04-27 15:32     ` Mathieu Desnoyers
  0 siblings, 1 reply; 4+ messages in thread
From: Xiao Guangrong @ 2009-04-27  6:21 UTC (permalink / raw)
  To: Mathieu Desnoyers
  Cc: mingo, fweisbec, rostedt, zhaolei, laijs, Li Zefan, tzanussi,
	linux-kernel



Mathieu Desnoyers 写道:
> * Xiao Guangrong (xiaoguangrong@cn.fujitsu.com) wrote:
>> From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
>>
>> This patch is modified from Mathieu Desnoyers' patch. The original patch
>> can be found here: 
>> 	http://marc.info/?l=linux-kernel&m=123791201816245&w=2
>> This tracepoint can trace the time stamp when softirq action is raised. 
>>
>> Change log for v1 -> v2: 
>> 1: Use TRACE_EVENT instead of DEFINE_TRACE
>> 2: Move the tracepoint from raise_softirq_irqoff() to __raise_softirq_irqoff()
>>
> 
> Hi Xiao,
> 
>> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
>> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>>
>> ---
>>  include/linux/interrupt.h  |    9 ++++++++-
>>  include/trace/events/irq.h |   18 ++++++++++++++++++
>>  2 files changed, 26 insertions(+), 1 deletions(-)
>>
>> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
>> index 912c52c..86bae89 100644
>> --- a/include/linux/interrupt.h
>> +++ b/include/linux/interrupt.h
>> @@ -361,7 +361,14 @@ asmlinkage void do_softirq(void);
>>  asmlinkage void __do_softirq(void);
>>  extern void open_softirq(int nr, void (*action)(struct softirq_action *));
>>  extern void softirq_init(void);
>> -#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
>> +
>> +#include <trace/events/irq.h>
> 
> Includes are usually at the beginning of the files.
> 
> Besides that, the patch looks good.
> 
Hi Mathieu: 
I attempted to include <trace/events/irq.h> as your suggestion, but this results
in a cross references: 
struct softirq_action have been used in tarce/event/irq.h. 
so I move “include <trace/events/irq.h>” in the front of __raise_softirq_irqoff. 

> Which tree is it for ? mainline 2.6.30-rc or Ingo's tip tree ?
> 
> Working with Ingo on -tip is probably better so the work can be
> synchronized with Steven's work more easily.
> 
This patch is work with Ingo on -tip tree

Thank you!
Xiao Guangrong
> Thanks a lot !
> 
> Mathieu
> 
>> +static inline void __raise_softirq_irqoff(unsigned int nr)
>> +{
>> +	trace_irq_softirq_raise(nr);
>> +	or_softirq_pending(1UL << nr);
>> +}
>> +
>>  extern void raise_softirq_irqoff(unsigned int nr);
>>  extern void raise_softirq(unsigned int nr);
>>  extern void wakeup_softirqd(void);
>> diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
>> index 7686864..2628e08 100644
>> --- a/include/trace/events/irq.h
>> +++ b/include/trace/events/irq.h
>> @@ -90,6 +90,24 @@ TRACE_EVENT(softirq_exit,
>>  	TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
>>  );
>>  
>> +TRACE_EVENT(irq_softirq_raise,
>> +
>> +	TP_PROTO(unsigned int nr),
>> +
>> +	TP_ARGS(nr),
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned int,	nr	)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->nr	= nr;
>> +	),
>> +
>> +	TP_printk("softirq=%d action=%s is raised",
>> +		__entry->nr, softirq_to_name[__entry->nr])
>> +);
>> +
>>  #endif /*  _TRACE_IRQ_H */
>>  
>>  /* This part must be outside protection */
>> -- 
>> 1.6.1.2
>>
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] ftrace: add a tracepoint for __raise_softirq_irqoff()
  2009-04-27  6:21   ` Xiao Guangrong
@ 2009-04-27 15:32     ` Mathieu Desnoyers
  0 siblings, 0 replies; 4+ messages in thread
From: Mathieu Desnoyers @ 2009-04-27 15:32 UTC (permalink / raw)
  To: Xiao Guangrong
  Cc: mingo, fweisbec, rostedt, zhaolei, laijs, Li Zefan, tzanussi,
	linux-kernel

* Xiao Guangrong (xiaoguangrong@cn.fujitsu.com) wrote:
> 
> 
> Mathieu Desnoyers 写道:
> > * Xiao Guangrong (xiaoguangrong@cn.fujitsu.com) wrote:
> >> From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> >>
> >> This patch is modified from Mathieu Desnoyers' patch. The original patch
> >> can be found here: 
> >> 	http://marc.info/?l=linux-kernel&m=123791201816245&w=2
> >> This tracepoint can trace the time stamp when softirq action is raised. 
> >>
> >> Change log for v1 -> v2: 
> >> 1: Use TRACE_EVENT instead of DEFINE_TRACE
> >> 2: Move the tracepoint from raise_softirq_irqoff() to __raise_softirq_irqoff()
> >>
> > 
> > Hi Xiao,
> > 
> >> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> >> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> >>
> >> ---
> >>  include/linux/interrupt.h  |    9 ++++++++-
> >>  include/trace/events/irq.h |   18 ++++++++++++++++++
> >>  2 files changed, 26 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> >> index 912c52c..86bae89 100644
> >> --- a/include/linux/interrupt.h
> >> +++ b/include/linux/interrupt.h
> >> @@ -361,7 +361,14 @@ asmlinkage void do_softirq(void);
> >>  asmlinkage void __do_softirq(void);
> >>  extern void open_softirq(int nr, void (*action)(struct softirq_action *));
> >>  extern void softirq_init(void);
> >> -#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
> >> +
> >> +#include <trace/events/irq.h>
> > 
> > Includes are usually at the beginning of the files.
> > 
> > Besides that, the patch looks good.
> > 
> Hi Mathieu: 
> I attempted to include <trace/events/irq.h> as your suggestion, but this results
> in a cross references: 
> struct softirq_action have been used in tarce/event/irq.h. 
> so I move “include <trace/events/irq.h>” in the front of __raise_softirq_irqoff. 

Steven : so, what's the current deal with

- #include <trace/irq.h> vs #include <trace/events/irq.h> ?

- Having header dependency in the ftrace-specific parts of the
  TRACE_EVENT macros ?

Mathieu

> 
> > Which tree is it for ? mainline 2.6.30-rc or Ingo's tip tree ?
> > 
> > Working with Ingo on -tip is probably better so the work can be
> > synchronized with Steven's work more easily.
> > 
> This patch is work with Ingo on -tip tree
> 
> Thank you!
> Xiao Guangrong
> > Thanks a lot !
> > 
> > Mathieu
> > 
> >> +static inline void __raise_softirq_irqoff(unsigned int nr)
> >> +{
> >> +	trace_irq_softirq_raise(nr);
> >> +	or_softirq_pending(1UL << nr);
> >> +}
> >> +
> >>  extern void raise_softirq_irqoff(unsigned int nr);
> >>  extern void raise_softirq(unsigned int nr);
> >>  extern void wakeup_softirqd(void);
> >> diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
> >> index 7686864..2628e08 100644
> >> --- a/include/trace/events/irq.h
> >> +++ b/include/trace/events/irq.h
> >> @@ -90,6 +90,24 @@ TRACE_EVENT(softirq_exit,
> >>  	TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
> >>  );
> >>  
> >> +TRACE_EVENT(irq_softirq_raise,
> >> +
> >> +	TP_PROTO(unsigned int nr),
> >> +
> >> +	TP_ARGS(nr),
> >> +
> >> +	TP_STRUCT__entry(
> >> +		__field(	unsigned int,	nr	)
> >> +	),
> >> +
> >> +	TP_fast_assign(
> >> +		__entry->nr	= nr;
> >> +	),
> >> +
> >> +	TP_printk("softirq=%d action=%s is raised",
> >> +		__entry->nr, softirq_to_name[__entry->nr])
> >> +);
> >> +
> >>  #endif /*  _TRACE_IRQ_H */
> >>  
> >>  /* This part must be outside protection */
> >> -- 
> >> 1.6.1.2
> >>
> > 

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-04-27 15:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-27  5:55 [PATCH v2] ftrace: add a tracepoint for __raise_softirq_irqoff() Xiao Guangrong
2009-04-27  6:01 ` Mathieu Desnoyers
2009-04-27  6:21   ` Xiao Guangrong
2009-04-27 15:32     ` Mathieu Desnoyers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).