All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
To: linux-kernel@vger.kernel.org, mingo@elte.hu,
	Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
	fweisbec@gmail.com, rostedt@goodmis.org, zhaolei@cn.fujitsu.com,
	laijs@cn.fujitsu.com, Li Zefan <lizf@cn.fujitsu.com>
Subject: [PATCH v3] ftrace: add a tracepoint for __raise_softirq_irqoff()
Date: Tue, 05 May 2009 14:41:32 +0800	[thread overview]
Message-ID: <49FFDF9C.7040505@cn.fujitsu.com> (raw)

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

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

---
 include/linux/interrupt.h  |    6 ++++++
 include/trace/events/irq.h |   18 ++++++++++++++++++
 kernel/softirq.c           |    8 ++++++++
 3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index dd574d5..3143341 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -361,7 +361,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);
+
+#ifdef CONFIG_TRACEPOINTS
+extern void __raise_softirq_irqoff(unsigned int nr);
+#else
 #define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
+#endif
+
 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..3c895bb 100644
--- a/include/trace/events/irq.h
+++ b/include/trace/events/irq.h
@@ -128,6 +128,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 */
diff --git a/kernel/softirq.c b/kernel/softirq.c
index b41fb71..bd0546b 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -310,6 +310,14 @@ void irq_exit(void)
 	preempt_enable_no_resched();
 }
 
+#ifdef CONFIG_TRACEPOINTS
+inline void __raise_softirq_irqoff(unsigned int nr)
+{
+	trace_irq_softirq_raise(nr);
+	or_softirq_pending(1UL << (nr));
+}
+#endif
+
 /*
  * This function must run with irqs disabled!
  */
-- 
1.6.1.2


             reply	other threads:[~2009-05-05  6:41 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-05  6:41 Xiao Guangrong [this message]
2009-05-05  6:53 ` [PATCH v3] ftrace: add a tracepoint for __raise_softirq_irqoff() 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
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=49FFDF9C.7040505@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.