Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Sep 2014 13:24:47 -0700
From:      Shrikanth Kamath <shrikanth07@gmail.com>
To:        freebsd-hackers@freebsd.org, freebsd-dtrace@freebsd.org, markj@freebsd.org
Subject:   Usage of DTRACE_PROBE macro from sdt.h in kernel modules
Message-ID:  <CAEOAkMWw07D-XTx8JXvVjU%2BOjUQbKcOZmYoLvzSGA=80B8q-tw@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Adding a DTRACE_PROBE(name) in a kernel module does not create the SDT
probe. I added
the following to the module file before using DTRACE_PROBE.
#include "opt_kdtrace.h"
#include <sys/sdt.h>

function_foo() {
...
+       DTRACE_PROBE(name);
...
}

I figured the sdt.h does declare SDT_PROVIDER_DECLARE(set); but that
is not helping. Was expecting a sdt probe added under provider 'set'.

The SDT probe creation returns from sdt_kld_load from here

       if (linker_file_lookup_set(lf, "sdt_providers_set", &begin, &end, NULL))
                return;

I did a nm on the kernel module and did not find anything matching
"sdt_providers_set"

nm -a module.ko | grep sdt

00000000 r __set_sdt_probes_set_sym_sdt_sdt______func____LINE__.103790

         U __start_set_sdt_probes_set

         U __stop_set_sdt_probes_set

         U sdt_probe_func

         U sdt_provider_sdt

000006c0 d sdt_sdt______func____LINE__.103789

Can't seem to figure how to get the SDT probe created by using
DTRACE_PROBE macro in a kernel module.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAEOAkMWw07D-XTx8JXvVjU%2BOjUQbKcOZmYoLvzSGA=80B8q-tw>