All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
To: mingo@elte.hu
Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>,
	Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
	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: [PATCH v4] ftrace: add a tracepoint for __raise_softirq_irqoff()
Date: Thu, 14 May 2009 18:53:30 +0800	[thread overview]
Message-ID: <4A0BF82A.2070208@cn.fujitsu.com> (raw)
In-Reply-To: <4A094677.5090900@cn.fujitsu.com>

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

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



  parent reply	other threads:[~2009-05-14 10:52 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                 ` Xiao Guangrong [this message]
2009-05-14 12:40                   ` [PATCH v4] " Mathieu Desnoyers
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=4A0BF82A.2070208@cn.fujitsu.com \
    --to=xiaoguangrong@cn.fujitsu.com \
    --cc=fweisbec@gmail.com \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mathieu.desnoyers@polymtl.ca \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --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.