Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Oct 2013 12:16:20 -0400
From:      Mark Johnston <markj@freebsd.org>
To:        Andriy Gapon <avg@FreeBSD.org>
Cc:        dtrace@FreeBSD.org
Subject:   Re: "unstable" sdt probes
Message-ID:  <20131024161620.GA1710@charmander>
In-Reply-To: <5268F461.7080504@FreeBSD.org>
References:  <5268F461.7080504@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Oct 24, 2013 at 01:20:17PM +0300, Andriy Gapon wrote:
> 
> Can our SDT (for kernel) implementation support probes with unspecified types
> for arguments?
> I would like to get DTRACE_PROBE*() which can be found in the code with
> OpenSolaris origins (e.g. ZFS) to work.  With minimal efforts :-)

Hm, it looks like illumos uses the first argument to DTRACE_PROBE* to
specify both the provider name and probe name; if no provider name is
given (based on a lookup in a table in sdt_subr.c), a default "sdt"
provider is used. It looks like this is what's happening for the ZFS
probes.

I'd suggest something like the following:
- to kern_sdt.c, add

SDT_PROVIDER_DEFINE(sdt);

- add DTRACE_PROBE* macros to sdt.h which invoke SDT_PROBE* with the sdt
  provider, i.e. something like

#define	DTRACE_PROBE1(name, type, arg) \
	SDT_PROBE1(sdt, , , name, arg)

- add a FreeBSD-only zfs_dtrace.c which contains the SDT_PROBE_DEFINE*
  invocations for the ZFS probes. You can define the types there, or not
  (using an empty string or NULL should work, I'm not sure).

This won't work for illumos code where the probes specify a provider,
but I think that's ok. I can do the first two steps if you agree with
this approach. I don't have any way to test the ZFS probes at the
moment, but I guess I can provide a zfs_dtrace.c too if you (or anyone
else) can test.

Thanks,
-Mark



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20131024161620.GA1710>