All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: linux-kernel@vger.kernel.org, Linus Torvalds <torvalds@osdl.org>,
	Andrew Morton <akpm@osdl.org>, Ingo Molnar <mingo@redhat.com>,
	Greg Kroah-Hartman <gregkh@suse.de>,
	Christoph Hellwig <hch@infradead.org>,
	ltt-dev@shafik.org, systemtap@sources.redhat.com,
	Douglas Niehaus <niehaus@eecs.ku.edu>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 05/05] update - Linux Kernel Markers, non optimised architectures
Date: Fri, 12 Jan 2007 13:23:01 -0500	[thread overview]
Message-ID: <20070112182301.GA11102@Krystal> (raw)
In-Reply-To: <45A71827.6020300@yahoo.com.au>

* Nick Piggin (nickpiggin@yahoo.com.au) wrote:
> OK, well one problem is that it can cause a resched event to be lost, so
> you might say it has more side-effects without checking resched.
> 

Here is the patch that implements this. I also did a cosmetic change to
linux/marker.h. Preliminary tests of running the markers with preempt_enable()
with LTTng 0.6.56 instrumentation shows no problem.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>

--- a/include/asm-generic/marker.h
+++ b/include/asm-generic/marker.h
@@ -39,7 +39,7 @@ struct __mark_marker {
 		if (unlikely(__marker_enable_##name)) { \
 			preempt_disable(); \
 			(*__mark_call_##name)(format, ## args); \
-			preempt_enable_no_resched(); \
+			preempt_enable(); \
 		} \
 	} while (0)
 
--- a/include/asm-i386/marker.h
+++ b/include/asm-i386/marker.h
@@ -42,7 +42,7 @@ struct __mark_marker {
 		if (unlikely(condition)) { \
 			preempt_disable(); \
 			(*__mark_call_##name)(format, ## args); \
-			preempt_enable_no_resched(); \
+			preempt_enable(); \
 		} \
 	} while (0)
 
--- a/include/asm-powerpc/marker.h
+++ b/include/asm-powerpc/marker.h
@@ -45,7 +45,7 @@ struct __mark_marker {
 		if (unlikely(condition)) { \
 			preempt_disable(); \
 			(*__mark_call_##name)(format, ## args); \
-			preempt_enable_no_resched(); \
+			preempt_enable(); \
 		} \
 	} while (0)
 
--- a/include/linux/marker.h
+++ b/include/linux/marker.h
@@ -8,12 +8,12 @@
  *
  * Example :
  *
- * MARK(subsystem_event, "%d %s %p[struct task_struct *]",
+ * MARK(subsystem_event, "%d %s %p[struct task_struct]",
  *   someint, somestring, current);
  * Where :
  * - Subsystem is the name of your subsystem.
  * - event is the name of the event to mark.
- * - "%d %s %p[struct task_struct *]" is the formatted string for printk.
+ * - "%d %s %p[struct task_struct]" is the formatted string for printk.
  * - someint is an integer.
  * - somestring is a char pointer.
  * - current is a pointer to a struct task_struct.
@@ -27,6 +27,9 @@
  * Markers can be put in inline functions, inlined static functions and
  * unrolled loops.
  *
+ * Note : It is safe to put markers within preempt-safe code : preempt_enable()
+ * will not call the scheduler due to the tests in preempt_schedule().
+ *
  * (C) Copyright 2006 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
  *
  * This file is released under the GPLv2.
-- 
OpenPGP public key:              http://krystal.dyndns.org:8080/key/compudj.gpg
Key fingerprint:     8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68 

      parent reply	other threads:[~2007-01-12 18:23 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-12  0:02 [PATCH 00/05] Linux Kernel Markers Mathieu Desnoyers
2007-01-12  0:02 ` [PATCH 01/05] Linux Kernel Markers : Kconfig menus Mathieu Desnoyers
2007-01-12  0:02 ` [PATCH 02/05] Linux Kernel Markers, architecture independant code Mathieu Desnoyers
2007-01-12  0:02 ` [PATCH 03/05] Linux Kernel Markers : powerpc optimisation Mathieu Desnoyers
2007-01-12  0:02 ` [PATCH 04/05] Linux Kernel Markers : i386 optimisation Mathieu Desnoyers
2007-01-12  0:02 ` [PATCH 05/05] Linux Kernel Markers, non optimised architectures Mathieu Desnoyers
2007-01-12  4:39   ` Nick Piggin
2007-01-12  5:00     ` Mathieu Desnoyers
2007-01-12  5:09       ` Nick Piggin
2007-01-12 17:15         ` Mathieu Desnoyers
2007-01-12 17:43           ` Mathieu Desnoyers
2007-01-12 18:23         ` Mathieu Desnoyers [this message]

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=20070112182301.GA11102@Krystal \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=akpm@osdl.org \
    --cc=gregkh@suse.de \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ltt-dev@shafik.org \
    --cc=mingo@redhat.com \
    --cc=nickpiggin@yahoo.com.au \
    --cc=niehaus@eecs.ku.edu \
    --cc=systemtap@sources.redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@osdl.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 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.