From: Mathieu Desnoyers <compudj@krystal.dyndns.org>
To: "Frank Ch. Eigler" <fche@redhat.com>
Cc: Karim Yaghmour <karim@opersys.com>,
linux-kernel@vger.kernel.org,
Christoph Hellwig <hch@infradead.org>,
Andrew Morton <akpm@osdl.org>, Ingo Molnar <mingo@redhat.com>,
Greg Kroah-Hartman <gregkh@suse.de>,
Thomas Gleixner <tglx@linutronix.de>,
Douglas Niehaus <niehaus@eecs.ku.edu>,
Tom Zanussi <zanussi@us.ibm.com>,
Paul Mundt <lethal@linux-sh.org>, Jes Sorensen <jes@sgi.com>,
Richard J Moore <richardj_moore@uk.ibm.com>,
William Cohen <wcohen@redhat.com>,
"Martin J. Bligh" <mbligh@mbligh.org>,
Michel Dagenais <michel.dagenais@polymtl.ca>,
systemtap@sources.redhat.com, ltt-dev@shafik.org
Subject: Re: [PATCH] Linux Kernel Markers 0.2 for Linux 2.6.17
Date: Wed, 20 Sep 2006 09:38:34 -0400 [thread overview]
Message-ID: <20060920133834.GB17032@Krystal> (raw)
In-Reply-To: <20060920132008.GF18646@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2306 bytes --]
* Frank Ch. Eigler (fche@redhat.com) wrote:
> Hi -
>
> > > [...] For the static part of the instrumentation, a
> > > marker that could be hooked up to either type of probing system was
> > > desirable, which implies some sort of run-time changeability.
> >
> > Ok. So if I get what you're saying here, you'd like to be able to
> > overload a marker?
>
> Sort of. Remember, we discussed markers as *marking* places and
> things, with the intent that they be decoupled from the actual
> *action* that is taken when the marker is hit.
>
> > Can you suggest a macro that can do what you'd like. [...]
>
> Compare the kind of marker I showed at OLS and presently supported by
> systemtap. Its unparametrized version looks like this:
>
> #define STAP_MARK(name) do { \
> static void (*__mark_##name##_)(); \
> if (unlikely (__mark_##name##_)) \
> (void) (__mark_##name##_()); \
> } while (0)
>
> A tracing/probing tool would hook up to a particular and specific
> marker at run time by locating the __mark_NAME static variable (a
> function pointer) in the data segment, for example using the ordinary
> symbol table, and swapping into it the address of a compatible
> back-end handler function. When a particular tracing/probing session
> ends, the function pointer is reset to null.
>
> Note that this technique:
>
> - operates at run time
> - is portable
> - in its parametrized variants, is type-safe
> - does not require any future technology
> - does impose some overhead even when a marker is not active
>
>
Hi Frank,
Yes, I think there is much to gain to switch from the 5 nops "jumpprobe" to
this scheme. In its parametrized variant, the jump will probably jump over a
stack setup and function call. Do you think I should simply switch from the
5 nops marker to this technique ? I guess the performance impact of a
predicted branch will be similar to 5 nops anyway...
The clear advantage I see in the parametrized variant is that the parameters
will be ready for the called function : it makes it trivial to access any
variable from the traced function.
Mathieu
OpenPGP public key: http://krystal.dyndns.org:8080/key/compudj.gpg
Key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2006-09-20 13:43 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-19 18:34 [PATCH] Linux Kernel Markers 0.2 for Linux 2.6.17 Mathieu Desnoyers
2006-09-19 8:39 ` S. P. Prasanna
2006-09-19 20:05 ` Mathieu Desnoyers
2006-09-19 18:51 ` Randy.Dunlap
2006-09-19 19:13 ` Mathieu Desnoyers
2006-09-19 19:23 ` Frank Ch. Eigler
2006-09-19 19:36 ` Mathieu Desnoyers
2006-09-19 19:45 ` Frank Ch. Eigler
2006-09-19 20:28 ` Mathieu Desnoyers
2006-09-19 21:07 ` Frank Ch. Eigler
2006-09-19 22:11 ` Karim Yaghmour
2006-09-20 13:20 ` Frank Ch. Eigler
2006-09-20 13:38 ` Mathieu Desnoyers [this message]
2006-09-20 14:57 ` Mathieu Desnoyers
2006-09-20 15:53 ` Frank Ch. Eigler
2006-09-20 16:37 ` Mathieu Desnoyers
2006-09-20 17:14 ` Mathieu Desnoyers
2006-09-20 13:46 ` 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=20060920133834.GB17032@Krystal \
--to=compudj@krystal.dyndns.org \
--cc=akpm@osdl.org \
--cc=fche@redhat.com \
--cc=gregkh@suse.de \
--cc=hch@infradead.org \
--cc=jes@sgi.com \
--cc=karim@opersys.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ltt-dev@shafik.org \
--cc=mbligh@mbligh.org \
--cc=michel.dagenais@polymtl.ca \
--cc=mingo@redhat.com \
--cc=niehaus@eecs.ku.edu \
--cc=richardj_moore@uk.ibm.com \
--cc=systemtap@sources.redhat.com \
--cc=tglx@linutronix.de \
--cc=wcohen@redhat.com \
--cc=zanussi@us.ibm.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.