Re: Multiple handlers per marker
Mike Mason <[email protected]> Fri, 02 Nov 2007 07:11:13 -0700
| Newsgroups | gmane.linux.systemtap,gmane.linux.kernel.tracing |
|---|---|
| Message-ID | <[email protected]> |
Mathieu Desnoyers wrote: > * Mathieu Desnoyers ([email protected]) wrote: >> * Mike Mason ([email protected]) wrote: >>> Hi Mathieu, >>> >>> Are you aware of any working being done to allow multiple handlers to be >>> attached to a marker? Something like what kprobes allows. I've started to >>> look into this and don't want to duplicate efforts. >>> >> Nope, but I know we will have to address this. >> >> Something along the lines of walking an RCU list of function pointers, >> calling them. >> >> The only downside I see is that we will have to pass a va_list * instead >> of real va args. The could make the marker site a little bit bigger and >> will change the probe callback arguments. >> >> What do you think about these ideas ? >> >> If we can find a way to make the common case (only one probe connected) >> _ultra_ fast, and yet architecture independent, that would be awesome. A >> simple call is kind of hard to beat though.. So we may have to think >> about a design with : >> >> - One call at the marker site >> - if 1 probe is installed : >> - If the format string is empty, connect a probe without va args. >> - If the format string is not empty, connect a "stage 1" probe that takes >> the va args, starts/ends the va_list and calls _one_ function (let's >> call it "stage 2" probe), that takes va_list as parameter. >> - if more than 1 probe is installed : >> - The stage 1 probe creates the va_list and passes it to each function >> connected, iterated with an RCU list. >> >> What do you think ? Your proposal sounds reasonable to me. How would marker_arm(), marker_disarm() and marker_probe_unregister() change? They'll need to work on a per probe handler basis, rather than per marker. They'll need to know the marker name *and* the specific handler, or perhaps just the handler if you keep a master list of all handlers. In any case, the interface will need to change. >> >> Mathieu >> > > I'm working on an implementation. Great! When you need reviewers/testers let me know. I'm copying this to the SystemTap list. Multiple markers is a "must have" feature for SystemTap. Thanks, Mike > >>> Thanks, >>> Mike >> -- >> Mathieu Desnoyers >> Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal >> OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 >