From: Steven Rostedt <rostedt@goodmis.org>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Christoph Hellwig <hch@infradead.org>,
Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
Gregory Haskins <ghaskins@novell.com>,
Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
"William L. Irwin" <sparclinux@vger.kernel.org>,
Steven Rostedt <srostedt@redhat.com>
Subject: [RFC PATCH 03/11] Annotate core code that should not be traced
Date: Thu, 03 Jan 2008 02:16:12 -0500 [thread overview]
Message-ID: <20080103072227.087067007@goodmis.org> (raw)
In-Reply-To: <20080103071609.478486470@goodmis.org>
[-- Attachment #1: mcount-annotate-generic-code.patch --]
[-- Type: text/plain, Size: 8237 bytes --]
Mark with "notrace" functions in core code that should not be
traced. The "notrace" attribute will prevent gcc from adding
a call to mcount on the annotated funtions.
Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
---
drivers/clocksource/acpi_pm.c | 8 ++++----
include/linux/preempt.h | 4 ++--
kernel/irq/handle.c | 2 +-
kernel/lockdep.c | 27 ++++++++++++++-------------
kernel/rcupdate.c | 2 +-
kernel/spinlock.c | 2 +-
lib/smp_processor_id.c | 2 +-
7 files changed, 24 insertions(+), 23 deletions(-)
Index: linux-compile.git/drivers/clocksource/acpi_pm.c
===================================================================
--- linux-compile.git.orig/drivers/clocksource/acpi_pm.c 2007-12-20 01:00:29.000000000 -0500
+++ linux-compile.git/drivers/clocksource/acpi_pm.c 2007-12-20 01:00:48.000000000 -0500
@@ -30,13 +30,13 @@
*/
u32 pmtmr_ioport __read_mostly;
-static inline u32 read_pmtmr(void)
+static inline notrace u32 read_pmtmr(void)
{
/* mask the output to 24 bits */
return inl(pmtmr_ioport) & ACPI_PM_MASK;
}
-u32 acpi_pm_read_verified(void)
+notrace u32 acpi_pm_read_verified(void)
{
u32 v1 = 0, v2 = 0, v3 = 0;
@@ -56,12 +56,12 @@ u32 acpi_pm_read_verified(void)
return v2;
}
-static cycle_t acpi_pm_read_slow(void)
+static notrace cycle_t acpi_pm_read_slow(void)
{
return (cycle_t)acpi_pm_read_verified();
}
-static cycle_t acpi_pm_read(void)
+static notrace cycle_t acpi_pm_read(void)
{
return (cycle_t)read_pmtmr();
}
Index: linux-compile.git/include/linux/preempt.h
===================================================================
--- linux-compile.git.orig/include/linux/preempt.h 2007-12-20 01:00:29.000000000 -0500
+++ linux-compile.git/include/linux/preempt.h 2007-12-20 01:00:48.000000000 -0500
@@ -11,8 +11,8 @@
#include <linux/list.h>
#ifdef CONFIG_DEBUG_PREEMPT
- extern void fastcall add_preempt_count(int val);
- extern void fastcall sub_preempt_count(int val);
+ extern notrace void fastcall add_preempt_count(int val);
+ extern notrace void fastcall sub_preempt_count(int val);
#else
# define add_preempt_count(val) do { preempt_count() += (val); } while (0)
# define sub_preempt_count(val) do { preempt_count() -= (val); } while (0)
Index: linux-compile.git/kernel/irq/handle.c
===================================================================
--- linux-compile.git.orig/kernel/irq/handle.c 2007-12-20 01:00:29.000000000 -0500
+++ linux-compile.git/kernel/irq/handle.c 2007-12-20 01:00:48.000000000 -0500
@@ -163,7 +163,7 @@ irqreturn_t handle_IRQ_event(unsigned in
* This is the original x86 implementation which is used for every
* interrupt type.
*/
-fastcall unsigned int __do_IRQ(unsigned int irq)
+notrace fastcall unsigned int __do_IRQ(unsigned int irq)
{
struct irq_desc *desc = irq_desc + irq;
struct irqaction *action;
Index: linux-compile.git/kernel/lockdep.c
===================================================================
--- linux-compile.git.orig/kernel/lockdep.c 2007-12-20 01:00:29.000000000 -0500
+++ linux-compile.git/kernel/lockdep.c 2007-12-20 01:00:48.000000000 -0500
@@ -270,14 +270,14 @@ static struct list_head chainhash_table[
((key1) >> (64-MAX_LOCKDEP_KEYS_BITS)) ^ \
(key2))
-void lockdep_off(void)
+notrace void lockdep_off(void)
{
current->lockdep_recursion++;
}
EXPORT_SYMBOL(lockdep_off);
-void lockdep_on(void)
+notrace void lockdep_on(void)
{
current->lockdep_recursion--;
}
@@ -1036,7 +1036,7 @@ find_usage_forwards(struct lock_class *s
* Return 1 otherwise and keep <backwards_match> unchanged.
* Return 0 on error.
*/
-static noinline int
+static noinline notrace int
find_usage_backwards(struct lock_class *source, unsigned int depth)
{
struct lock_list *entry;
@@ -1586,7 +1586,7 @@ static inline int validate_chain(struct
* We are building curr_chain_key incrementally, so double-check
* it from scratch, to make sure that it's done correctly:
*/
-static void check_chain_key(struct task_struct *curr)
+static notrace void check_chain_key(struct task_struct *curr)
{
#ifdef CONFIG_DEBUG_LOCKDEP
struct held_lock *hlock, *prev_hlock = NULL;
@@ -1962,7 +1962,7 @@ static int mark_lock_irq(struct task_str
/*
* Mark all held locks with a usage bit:
*/
-static int
+static notrace int
mark_held_locks(struct task_struct *curr, int hardirq)
{
enum lock_usage_bit usage_bit;
@@ -2009,7 +2009,7 @@ void early_boot_irqs_on(void)
/*
* Hardirqs will be enabled:
*/
-void trace_hardirqs_on(void)
+notrace void trace_hardirqs_on(void)
{
struct task_struct *curr = current;
unsigned long ip;
@@ -2057,7 +2057,7 @@ EXPORT_SYMBOL(trace_hardirqs_on);
/*
* Hardirqs were disabled:
*/
-void trace_hardirqs_off(void)
+notrace void trace_hardirqs_off(void)
{
struct task_struct *curr = current;
@@ -2241,8 +2241,8 @@ static inline int separate_irq_context(s
/*
* Mark a lock with a usage bit, and validate the state transition:
*/
-static int mark_lock(struct task_struct *curr, struct held_lock *this,
- enum lock_usage_bit new_bit)
+static notrace int mark_lock(struct task_struct *curr, struct held_lock *this,
+ enum lock_usage_bit new_bit)
{
unsigned int new_mask = 1 << new_bit, ret = 1;
@@ -2648,7 +2648,7 @@ __lock_release(struct lockdep_map *lock,
/*
* Check whether we follow the irq-flags state precisely:
*/
-static void check_flags(unsigned long flags)
+static notrace void check_flags(unsigned long flags)
{
#if defined(CONFIG_DEBUG_LOCKDEP) && defined(CONFIG_TRACE_IRQFLAGS)
if (!debug_locks)
@@ -2685,8 +2685,8 @@ static void check_flags(unsigned long fl
* We are not always called with irqs disabled - do that here,
* and also avoid lockdep recursion:
*/
-void lock_acquire(struct lockdep_map *lock, unsigned int subclass,
- int trylock, int read, int check, unsigned long ip)
+notrace void lock_acquire(struct lockdep_map *lock, unsigned int subclass,
+ int trylock, int read, int check, unsigned long ip)
{
unsigned long flags;
@@ -2708,7 +2708,8 @@ void lock_acquire(struct lockdep_map *lo
EXPORT_SYMBOL_GPL(lock_acquire);
-void lock_release(struct lockdep_map *lock, int nested, unsigned long ip)
+notrace void lock_release(struct lockdep_map *lock, int nested,
+ unsigned long ip)
{
unsigned long flags;
Index: linux-compile.git/kernel/rcupdate.c
===================================================================
--- linux-compile.git.orig/kernel/rcupdate.c 2007-12-20 01:00:29.000000000 -0500
+++ linux-compile.git/kernel/rcupdate.c 2007-12-20 01:00:48.000000000 -0500
@@ -504,7 +504,7 @@ static int __rcu_pending(struct rcu_ctrl
* by the current CPU, returning 1 if so. This function is part of the
* RCU implementation; it is -not- an exported member of the RCU API.
*/
-int rcu_pending(int cpu)
+notrace int rcu_pending(int cpu)
{
return __rcu_pending(&rcu_ctrlblk, &per_cpu(rcu_data, cpu)) ||
__rcu_pending(&rcu_bh_ctrlblk, &per_cpu(rcu_bh_data, cpu));
Index: linux-compile.git/kernel/spinlock.c
===================================================================
--- linux-compile.git.orig/kernel/spinlock.c 2007-12-20 01:00:29.000000000 -0500
+++ linux-compile.git/kernel/spinlock.c 2007-12-20 01:00:48.000000000 -0500
@@ -437,7 +437,7 @@ int __lockfunc _spin_trylock_bh(spinlock
}
EXPORT_SYMBOL(_spin_trylock_bh);
-int in_lock_functions(unsigned long addr)
+notrace int in_lock_functions(unsigned long addr)
{
/* Linker adds these: start and end of __lockfunc functions */
extern char __lock_text_start[], __lock_text_end[];
Index: linux-compile.git/lib/smp_processor_id.c
===================================================================
--- linux-compile.git.orig/lib/smp_processor_id.c 2007-12-20 01:00:29.000000000 -0500
+++ linux-compile.git/lib/smp_processor_id.c 2007-12-20 01:00:48.000000000 -0500
@@ -7,7 +7,7 @@
#include <linux/kallsyms.h>
#include <linux/sched.h>
-unsigned int debug_smp_processor_id(void)
+notrace unsigned int debug_smp_processor_id(void)
{
unsigned long preempt_count = preempt_count();
int this_cpu = raw_smp_processor_id();
--
next prev parent reply other threads:[~2008-01-03 7:25 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-03 7:16 [RFC PATCH 00/11] mcount tracing utility Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 01/11] Add basic support for gcc profiler instrumentation Steven Rostedt
2008-01-03 8:31 ` Sam Ravnborg
2008-01-03 14:03 ` Steven Rostedt
2008-01-03 9:21 ` Ingo Molnar
2008-01-03 13:58 ` Steven Rostedt
2008-01-03 18:16 ` Chris Wright
2008-01-03 19:15 ` Steven Rostedt
2008-01-03 19:17 ` Chris Wright
2008-01-03 19:18 ` Jeremy Fitzhardinge
2008-01-03 16:01 ` Daniel Walker
2008-01-03 17:35 ` Mathieu Desnoyers
2008-01-03 17:55 ` Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 02/11] Add fastcall to do_IRQ for i386 Steven Rostedt
2008-01-03 17:36 ` Mathieu Desnoyers
2008-01-03 17:47 ` Steven Rostedt
2008-01-07 4:50 ` H. Peter Anvin
2008-01-07 12:42 ` Steven Rostedt
2008-01-03 7:16 ` Steven Rostedt [this message]
2008-01-03 17:42 ` [RFC PATCH 03/11] Annotate core code that should not be traced Mathieu Desnoyers
2008-01-03 18:07 ` Steven Rostedt
2008-01-03 18:34 ` Mathieu Desnoyers
2008-01-03 7:16 ` [RFC PATCH 04/11] i386: notrace annotations Steven Rostedt
2008-01-03 17:52 ` Mathieu Desnoyers
2008-01-03 7:16 ` [RFC PATCH 05/11] x86_64: " Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 06/11] add notrace annotations to vsyscall Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 07/11] mcount based trace in the form of a header file library Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 08/11] tracer add debugfs interface Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 09/11] mcount tracer output file Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 10/11] mcount tracer show task comm and pid Steven Rostedt
2008-01-03 17:56 ` Mathieu Desnoyers
2008-01-06 15:37 ` Ingo Molnar
2008-01-07 4:45 ` Mathieu Desnoyers
2008-01-09 16:45 ` Ingo Molnar
2008-01-03 7:16 ` [RFC PATCH 11/11] Add a symbol only trace output Steven Rostedt
2008-01-03 17:22 ` [RFC PATCH 00/11] mcount tracing utility Mathieu Desnoyers
2008-01-03 17:42 ` Steven Rostedt
2008-01-03 18:05 ` Andi Kleen
2008-01-04 6:42 ` Frank Ch. Eigler
2008-01-08 20:35 ` Tim Bird
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=20080103072227.087067007@goodmis.org \
--to=rostedt@goodmis.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@ghostprotocols.net \
--cc=akpm@linux-foundation.org \
--cc=ghaskins@novell.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=sparclinux@vger.kernel.org \
--cc=srostedt@redhat.com \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome