Hi Tiller,

Yes; there's no generic way of specifically excluding individual functions
or modules from instrumentation. You could add a predicate, but that will
just keep the function from recording data -- it will stil be instrumented.

Adam

On Tue, Jan 22, 2008 at 10:20:43AM -0800, Tiller Beauchamp wrote:
> Hi All,
> 
> Is the approach offered below still the only way to exclude particular
> functions or modules when using the pid provider?
> 
> Thanks,
> 
> .tiller
> 
> ---
> 
> 
> 
> Frome: Morgan.Herrington at Sun.COM Morgan.Herrington at Sun.COM
> Subject: [dtrace-discuss] Avoiding few functions using pid provider probes
> Date: Tue Aug 23 14:51:31 PDT 2005
> 
> 
> Jignesh:
> 
> Trying "[!MemoryContextSwitchTo]" won't work because that creates a
> regular expression character set which does NOT include any of those
> listed characters (rather than excluding that particular string).
> 
> Unable to come up with an elegant solution, I will offer the following
> ugly, brute-force application of regular expressions.
> 
> Consider a pattern which excludes functions starting with "M".  Then
> add back in those which start with "M" without a following "e".  Then
> add back in those which start with "Me" but without a following "m".
> Continue as necessary for "oryContextSwitchTo". Repeat for "LockBuffer".
> 
> For example:
> 
>  pid$target::[!ML]*:entry,  /* exclude funcs starting with "M" or "L" */
>  pid$target::M[!e]*:entry,  /* add back "M" without following "e"     */
>  pid$target::Me[!m]*:entry, /* add back "Me" without following "m"    */
>  pid$target::Mem[!o]*:entry,/* continue this pattern as necessary     */
>  pid$target::L[!o]*:entry,  /* repeat for "LockBuffer"                */
>  pid$target::Lo[!c]*:entry,
>  pid$target::Loc[!k]*:entry
>  {
>     self->ts = timestamp;
>  }
> 
> When I tried this on a test application, I also specified the "-Z"
> switch because several of the patterns did not match any functions.
> 
> This entire suggestion is predicated on the assumption that the complexity
> of this pattern match is paid during instrumentation time (in order to
> avoid run-time costs).  I haven't actually verified that this is true,
> so "buyer beware".
> 
> -morgan
> 
> >Somewhat helpful
> >
> >that works only if the wild Character is included .. I am trying to avoid
> >MemoryContextSwitchTo
> >& LockBuffer
> >
> >however if I use
> >[!MemoryContextSwitchTo]
> >it fails
> >but if I use
> >[!MemoryContextSwitchTo]*
> >it works
> >
> >Also how do I mention both MemoryContextSwitchTo as well as LockBuffer out
> >there?
> 
> _______________________________________________
> dtrace-discuss mailing list
> [email protected]

-- 
Adam Leventhal, Fishworks                        http://blogs.sun.com/ahl
_______________________________________________
dtrace-discuss mailing list
[email protected]

Reply via email to