Date: Mon, 28 May 2012 19:03:00 +0200 From: Fabian Keil <freebsd-listen@fabiankeil.de> To: gnn@freebsd.org Cc: arch@freebsd.org Subject: Re: RFC: A trial io provider for DTrace... Message-ID: <20120528190300.3a43fc8d@fabiankeil.de> In-Reply-To: <86wr40tfhf.wl%gnn@neville-neil.com> References: <86wr40tfhf.wl%gnn@neville-neil.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Sig_/JwiCtaM=HFd/B+UCSuQaqjH Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable gnn@freebsd.org wrote: > I have just put up the first patch that can give you something similar > to the io provider in DTrace. The patch is against HEAD of about a > week ago. >=20 > You can find the patch here: freebsd.org: >=20 > http://people.freebsd.org/~gnn/dtio_provider.diff >=20 > Note that you need to create a src/sys/modules/dtrace/dtio/ directory > for this patch, since patch doesn't seem to create directories for me. Worked for me when applying with -p0. > The arguments are not exactly the same as in Solaris, for instance I > don't yet support the fileinfo_t, but, you can get to the devstat and > bio structures via args[0] and args[1] respectively. >=20 > Here is an example of it working: >=20 > dtrace -n 'io:::start /args[0] !=3D 0/{ trace(args[0]->bio_bcount)}' >=20 > Remember you need to be root to use DTrace. Do you intent to eventually commit your patch to get dtrace working with sudo? I've been using it since you posted it last October and haven't seen any issues. http://lists.freebsd.org/pipermail/freebsd-current/2011-October/028120.html > I need to clean this up and get the translators working properly > before I can check this in. >=20 > Also, note that this patch doesn't catch all I/O, but should get most > of it, as it's hooked into the devstat system. >=20 > I will be adding manual pages for the internals of DTrace to our > section 9, as well as, hopefully, writing up a wiki page on how to add > your own kernel providers. >=20 > Comments welcome. I got: clang -c -O2 -pipe -fno-strict-aliasing -std=3Dc99 -g -Wall -Wredundant-de= cls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-ar= ith -Winline -Wcast-qual /usr/src/sys/kern/subr_devstat.c:390:2: error: use of undeclared identi= fier 'bs' DTRACE_DEVSTAT_BIO_DONE(); ^ /usr/src/sys/kern/subr_devstat.c:76:41: note: expanded from macro 'DTRA= CE_DEVSTAT_BIO_DONE' (*dtrace_io_done_probe)(dtio_done_id, bs, ds); ^ 1 error generated. *** Error code 1 Stop in /usr/obj/usr/src/sys/ZOEY. *** Error code 1 Stop in /usr/src. *** [buildkernel] Error code 1 and used the following patch to get it to compile: diff --git a/sys/kern/subr_devstat.c b/sys/kern/subr_devstat.c index e2b6d21..732bf9c 100644 --- a/sys/kern/subr_devstat.c +++ b/sys/kern/subr_devstat.c @@ -73,7 +73,7 @@ uint32_t dtio_wait_done_id; #define DTRACE_DEVSTAT_BIO_DONE() \ if (dtrace_io_done_probe !=3D NULL) \ - (*dtrace_io_done_probe)(dtio_done_id, bs, ds); + (*dtrace_io_done_probe)(dtio_done_id, bp, ds); Other than that the provider seems to work fine so far. Thanks a lot. Fabian --Sig_/JwiCtaM=HFd/B+UCSuQaqjH Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iEYEARECAAYFAk/Dr8sACgkQBYqIVf93VJ0JFgCfTDujAxJajr4079QCmroHgWsl wDcAn12ctyO6y8hGFhLA1RwxzoB4TNNj =Jfaw -----END PGP SIGNATURE----- --Sig_/JwiCtaM=HFd/B+UCSuQaqjH--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120528190300.3a43fc8d>