All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Cc: mingo@elte.hu, Steven Rostedt <rostedt@goodmis.org>,
	linux-kernel@vger.kernel.org, fweisbec@gmail.com,
	zhaolei@cn.fujitsu.com, laijs@cn.fujitsu.com,
	Li Zefan <lizf@cn.fujitsu.com>
Subject: Re: [PATCH v4] ftrace: add a tracepoint for __raise_softirq_irqoff()
Date: Thu, 14 May 2009 08:40:13 -0400	[thread overview]
Message-ID: <20090514124013.GC21241@Krystal> (raw)
In-Reply-To: <4A0BF82A.2070208@cn.fujitsu.com>

* 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. 
> 
> Changelog for v1 -> v2: 
> 1: Use TRACE_EVENT instead of DEFINE_TRACE
> 2: Move the tracepoint from raise_softirq_irqoff() to
>    __raise_softirq_irqoff()
> 
> Changelog for v2 -> v3: 
> Move the definition of __raise_softifq_irqoff() to .c file when
> CONFIG_TRACEPOINTS is enabled, to avoid recursive includes
> 
> Changelog for v3 -> v4: 
> 1: Come back to v2, and use forward declarations to avoid
>    recursive includes as Mathieu's suggestion
> 2: Modifiy the tracepoint name
> 3: Add comments for this tracepoint
> 

This is a step in the right direction, but please see my email to Lai
about the fact that this assumes correct and undocumented include
dependencies in kernel/trace/events.c. Not explicitely stating the
include dependencies is a build error waiting to happen.

Including interrupt.h under a ifdef would allow keeping track of
TRACE_EVENT specific build dependencies neatly on a per header basis.

Mathieu

> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> Review-by: Lai Jiangshan <laijs@cn.fujitsu.com>
> ---
>  include/linux/interrupt.h  |    9 ++++++++-
>  include/trace/events/irq.h |   27 ++++++++++++++++++++++++++-
>  2 files changed, 34 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> index dd574d5..51e7909 100644
> --- a/include/linux/interrupt.h
> +++ b/include/linux/interrupt.h
> @@ -18,6 +18,7 @@
>  #include <asm/atomic.h>
>  #include <asm/ptrace.h>
>  #include <asm/system.h>
> +#include <trace/events/irq.h>
>  
>  /*
>   * These correspond to the IORESOURCE_IRQ_* defines in
> @@ -361,7 +362,13 @@ 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)
> +
> +static inline void __raise_softirq_irqoff(unsigned int nr)
> +{
> +	trace_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 32a9f7e..08fa63b 100644
> --- a/include/trace/events/irq.h
> +++ b/include/trace/events/irq.h
> @@ -2,11 +2,13 @@
>  #define _TRACE_IRQ_H
>  
>  #include <linux/tracepoint.h>
> -#include <linux/interrupt.h>
>  
>  #undef TRACE_SYSTEM
>  #define TRACE_SYSTEM irq
>  
> +struct irqaction;
> +struct softirq_action;
> +
>  /**
>   * irq_handler_entry - called immediately before the irq action handler
>   * @irq: irq number
> @@ -128,6 +130,29 @@ TRACE_EVENT(softirq_exit,
>  	TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
>  );
>  
> +/**
> + * softirq_raise - called immediately when a softirq is raised
> + * @nr: softirq vector number
> + */
> +TRACE_EVENT(softirq_raise,
> +
> +	TP_PROTO(unsigned int nr),
> +
> +	TP_ARGS(nr),
> +
> +	TP_STRUCT__entry(
> +		__field(	unsigned int,	nr			)
> +		__string(	name,		softirq_to_name[nr]	)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->nr	= nr;
> +		__assign_str(name, softirq_to_name[nr]);
> +	),
> +
> +	TP_printk("softirq=%u action=%s", __entry->nr, __get_str(name))
> +);
> +
>  #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

  reply	other threads:[~2009-05-14 12:40 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-05  6:41 [PATCH v3] ftrace: add a tracepoint for __raise_softirq_irqoff() Xiao Guangrong
2009-05-05  6:53 ` Li Zefan
2009-05-07  0:57   ` Xiao Guangrong
2009-05-05 16:16 ` Mathieu Desnoyers
2009-05-11  7:28   ` Xiao Guangrong
2009-05-11 13:40     ` Mathieu Desnoyers
2009-05-11 14:09       ` Steven Rostedt
2009-05-11 14:27         ` Mathieu Desnoyers
2009-05-11 14:53           ` Steven Rostedt
2009-05-11 15:13             ` Mathieu Desnoyers
2009-05-12  9:50               ` Xiao Guangrong
2009-05-12 13:14                 ` Mathieu Desnoyers
2009-05-14 10:53                 ` [PATCH v4] " Xiao Guangrong
2009-05-14 12:40                   ` Mathieu Desnoyers [this message]
2009-05-14 13:26                     ` Steven Rostedt
2009-05-14 13:51                       ` Mathieu Desnoyers
2009-05-15  1:53                       ` Xiao Guangrong
2009-05-18  3:06                         ` Zhaolei
2009-05-19  8:24                           ` Ingo Molnar
2009-05-21  5:39                             ` Zhaolei
2009-06-12  2:36                             ` Lai Jiangshan
2009-06-12  9:51                               ` [PATCH RFC] softirq: fix ksoftirq starved Lai Jiangshan
2009-06-17 14:53                                 ` Ingo Molnar
2009-06-18  3:19                                   ` Lai Jiangshan
2009-06-18  8:22                                     ` Peter Zijlstra
2009-06-20 15:48                                     ` Ingo Molnar
2009-07-03  9:35                             ` [PATCH v4] ftrace: add a tracepoint for __raise_softirq_irqoff() Lai Jiangshan
2009-07-03  9:44                               ` Ingo Molnar
2009-07-09 12:58                                 ` Lai Jiangshan
2009-05-14  2:44       ` [PATCH v3] " Lai Jiangshan
2009-05-14  3:50         ` Mathieu Desnoyers
2009-05-14  6:06           ` Lai Jiangshan
2009-05-14  8:05             ` Xiao Guangrong
2009-05-14 12:36             ` Mathieu Desnoyers
2009-05-14 13:25               ` Steven Rostedt
2009-05-06 13:49 ` Jason Baron
2009-05-07  1:16   ` Xiao Guangrong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090514124013.GC21241@Krystal \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=fweisbec@gmail.com \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=xiaoguangrong@cn.fujitsu.com \
    --cc=zhaolei@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.