This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Linux kernel marker questions


Mathieu,

I've just finished checking in initial support for your new kernel markers into systemtap. I've got some rough edges to work on, but in general it works.

As I implemented the marker support, I come up with several questions I'd like some help/clarification with.

1) According to Documentation/marker.txt, the marker name (subsystem_event) is "is an identifier unique to your event".

Am I correct that unique marker names are not strictly enforced but "uniqueness" is more of a convention?

_marker_set_probe() seems to support the view that marker names aren't unique since it doesn't stop looking for more marker matches once it finds a match.

One problem this creates for systemtap is that systemtap's probe syntax looks like 'kernel.mark("marker_name")' and 'module("module_name").mark('marker_name'). I believe with the current code if a marker exists with the same name, format string, and flags in the kernel and a loadable module there isn't any way to only enable the marker in one place or the other - you can only enable both markers (assuming the module is loaded). Am I correct?

2) _marker_set_probe() expects the marker name, format string, and flags that were specified when the marker was inserted. If marker names were truly unique, I would really only need the marker name to enable a marker.

Since systemtap can compile modules for a kernel that isn't running, I can't really use marker_list_probe() for getting a list of markers present (even if the output of marker_list_probe() was more than just printks). So, currently to get a list of markers for a particular kernel, the code reads and parses the kernel/module '__markers_strings' elf section, which gets systemtap the marker names and format strings. (Getting the marker flags out of a kernel/module elf file is possible, but won't be easy.)

Currently systemtap can only enable markers that used the MF_DEFAULT set of flags.

Have you got any ideas on how systemtap (or any other program) can get a list of all the data _marker_set_probe needs?

3) From systemtap's point of view, _marker_set_probe() doesn't return enough error information. Currently it just returns the number of probes enabled. If _marker_set_probe returns a 0 (meaning no markers were enabled), I don't know which of the following that means:

- the marker name wasn't found
- the marker name was found, but format string didn't match the compiled format string
- the marker name was found and the format strings matched, but the marker flags didn't match the compiled marker flags
- the marker is already enabled (since markers can only have one function attached to them at a time)


Would there be any way of getting more detailed error information?

Thanks for the help.

--
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]