From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
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] Linux Kernel Markers, non optimised architectures
Date: Fri, 12 Jan 2007 16:09:59 +1100 [thread overview]
Message-ID: <45A71827.6020300@yahoo.com.au> (raw)
In-Reply-To: <20070112050032.GA14100@Krystal>
Mathieu Desnoyers wrote:
> * Nick Piggin (nickpiggin@yahoo.com.au) wrote:
>
>>Mathieu Desnoyers wrote:
>>
>>
>>>+#define MARK(name, format, args...) \
>>>+ do { \
>>>+ static marker_probe_func *__mark_call_##name = \
>>>+ __mark_empty_function; \
>>>+ volatile static char __marker_enable_##name = 0; \
>>>+ static const struct __mark_marker_c __mark_c_##name \
>>>+ __attribute__((section(".markers.c"))) = \
>>>+ { #name, &__mark_call_##name, format } ; \
>>>+ static const struct __mark_marker __mark_##name \
>>>+ __attribute__((section(".markers"))) = \
>>>+ { &__mark_c_##name, &__marker_enable_##name } ; \
>>>+ asm volatile ( "" : : "i" (&__mark_##name)); \
>>>+ __mark_check_format(format, ## args); \
>>>+ if (unlikely(__marker_enable_##name)) { \
>>>+ preempt_disable(); \
>>>+ (*__mark_call_##name)(format, ## args); \
>>>+ preempt_enable_no_resched(); \
>>
>>Why not just preempt_enable() here?
>>
>
>
> Because the preempt_enable() macro contains preempt_check_resched(), which
> may call preempt_schedule() which leads us to a call to schedule(). Therefore,
> all those very interesting scheduler functions would cause an infinite
> recursive scheduler call if we marked schedule() and used preempt_enable() in
> the marker.
The vast majority of schedule() has preempt turned off, so that shouldn't
be a problem, if you provide a comment.
> The primary goal for the markers (and the probes that attaches to them) is to
> have the fewest side-effects possible : any kernel method called from an
> instrumentation site adds this precise kernel method to the "cannot be
> instrumented" list, which I want to keep as small possible.
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.
--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com
next prev parent reply other threads:[~2007-01-12 5:10 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 [this message]
2007-01-12 17:15 ` Mathieu Desnoyers
2007-01-12 17:43 ` Mathieu Desnoyers
2007-01-12 18:23 ` [PATCH 05/05] update - " Mathieu Desnoyers
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=45A71827.6020300@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=akpm@osdl.org \
--cc=gregkh@suse.de \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ltt-dev@shafik.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@redhat.com \
--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.