[DTrace-devel] [PATCH 28/47] Make provider name handling in providers more consistent
Kris Van Hees
kris.van.hees at oracle.com
Sun May 3 20:17:45 PDT 2020
Providers used a mix of string constants and provname to pass the
provider name in a function call or to name the dt_provimp_t. Now
prvname (formerly provname) is used anywhere the provider name is
being used.
Other constant elements of probe descriptions (modname and funname for
the dtrace provider) are now also string constants assigned to
variables.
Since provider creation used an assignment within an if-statement and
all these statements were being changed to use prvname, this patch also
separates out the assignment to prv and the if-statement.
Orabug: 31220516
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
Reviewed-by: Eugene Loh <eugene.loh at oracle.com>
---
libdtrace/dt_prov_dtrace.c | 15 ++++++++++-----
libdtrace/dt_prov_fbt.c | 13 +++++++------
libdtrace/dt_prov_sdt.c | 11 ++++++-----
libdtrace/dt_prov_syscall.c | 11 ++++++-----
libdtrace/dt_provider.h | 2 +-
5 files changed, 30 insertions(+), 22 deletions(-)
diff --git a/libdtrace/dt_prov_dtrace.c b/libdtrace/dt_prov_dtrace.c
index 9c2a076f..f17da3b6 100644
--- a/libdtrace/dt_prov_dtrace.c
+++ b/libdtrace/dt_prov_dtrace.c
@@ -14,6 +14,10 @@
#include "dt_provider.h"
#include "dt_probe.h"
+static const char prvname[] = "dtrace";
+static const char modname[] = "";
+static const char funname[] = "";
+
static const dtrace_pattr_t pattr = {
{ DTRACE_STABILITY_STABLE, DTRACE_STABILITY_STABLE, DTRACE_CLASS_COMMON },
{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
@@ -28,14 +32,15 @@ static int populate(dtrace_hdl_t *dtp)
int n = 0;
- if (!(prv = dt_provider_create(dtp, "dtrace", &dt_dtrace, &pattr)))
+ prv = dt_provider_create(dtp, prvname, &dt_dtrace, &pattr);
+ if (prv == NULL)
return 0;
- if (dt_probe_insert(dtp, prv, "dtrace", "", "", "BEGIN"))
+ if (dt_probe_insert(dtp, prv, prvname, modname, funname, "BEGIN"))
n++;
- if (dt_probe_insert(dtp, prv, "dtrace", "", "", "END"))
+ if (dt_probe_insert(dtp, prv, prvname, modname, funname, "END"))
n++;
- if (dt_probe_insert(dtp, prv, "dtrace", "", "", "ERROR"))
+ if (dt_probe_insert(dtp, prv, prvname, modname, funname, "ERROR"))
n++;
return n;
@@ -201,7 +206,7 @@ static void trampoline(dt_pcb_t *pcb, int haspred)
}
dt_provimpl_t dt_dtrace = {
- .name = "dtrace",
+ .name = prvname,
.prog_type = BPF_PROG_TYPE_KPROBE,
.populate = &populate,
.trampoline = &trampoline,
diff --git a/libdtrace/dt_prov_fbt.c b/libdtrace/dt_prov_fbt.c
index f63d4a79..f42219d7 100644
--- a/libdtrace/dt_prov_fbt.c
+++ b/libdtrace/dt_prov_fbt.c
@@ -37,7 +37,7 @@
#include "dt_probe.h"
#include "dt_pt_regs.h"
-static const char provname[] = "fbt";
+static const char prvname[] = "fbt";
static const char modname[] = "vmlinux";
#define KPROBE_EVENTS TRACEFS "kprobe_events"
@@ -68,7 +68,8 @@ static int populate(dtrace_hdl_t *dtp)
dtrace_syminfo_t sip;
dtrace_probedesc_t pd;
- if (!(prv = dt_provider_create(dtp, "fbt", &dt_fbt, &pattr)))
+ prv = dt_provider_create(dtp, prvname, &dt_fbt, &pattr);
+ if (prv == NULL)
return 0;
f = fopen(PROBE_LIST, "r");
@@ -127,16 +128,16 @@ static int populate(dtrace_hdl_t *dtp)
* duplicate probes for these.
*/
pd.id = DTRACE_IDNONE;
- pd.prv = provname;
+ pd.prv = prvname;
pd.mod = mod;
pd.fun = buf;
pd.prb = "entry";
if (dt_probe_lookup(dtp, &pd) != NULL)
continue;
- if (dt_probe_insert(dtp, prv, provname, mod, buf, "entry"))
+ if (dt_probe_insert(dtp, prv, prvname, mod, buf, "entry"))
n++;
- if (dt_probe_insert(dtp, prv, provname, mod, buf, "return"))
+ if (dt_probe_insert(dtp, prv, prvname, mod, buf, "return"))
n++;
}
@@ -364,7 +365,7 @@ out:
}
dt_provimpl_t dt_fbt = {
- .name = "fbt",
+ .name = prvname,
.prog_type = BPF_PROG_TYPE_KPROBE,
.populate = &populate,
.trampoline = &trampoline,
diff --git a/libdtrace/dt_prov_sdt.c b/libdtrace/dt_prov_sdt.c
index ad76d9f5..64edc839 100644
--- a/libdtrace/dt_prov_sdt.c
+++ b/libdtrace/dt_prov_sdt.c
@@ -31,7 +31,7 @@
#include "dt_probe.h"
#include "dt_pt_regs.h"
-static const char provname[] = "sdt";
+static const char prvname[] = "sdt";
static const char modname[] = "vmlinux";
#define PROBE_LIST TRACEFS "available_events"
@@ -236,7 +236,8 @@ static int populate(dtrace_hdl_t *dtp)
char *p;
int n = 0;
- if (!(prv = dt_provider_create(dtp, "sdt", &dt_sdt, &pattr)))
+ prv = dt_provider_create(dtp, prvname, &dt_sdt, &pattr);
+ if (prv == NULL)
return 0;
f = fopen(PROBE_LIST, "r");
@@ -250,7 +251,7 @@ static int populate(dtrace_hdl_t *dtp)
p = strchr(buf, ':');
if (p == NULL) {
- if (dt_probe_insert(dtp, prv, provname, modname, "",
+ if (dt_probe_insert(dtp, prv, prvname, modname, "",
buf))
n++;
} else if (memcmp(buf, KPROBES, sizeof(KPROBES) - 1) == 0) {
@@ -260,7 +261,7 @@ static int populate(dtrace_hdl_t *dtp)
} else {
*p++ = '\0';
- if (dt_probe_insert(dtp, prv, provname, buf, "", p))
+ if (dt_probe_insert(dtp, prv, prvname, buf, "", p))
n++;
}
}
@@ -422,7 +423,7 @@ static int probe_info(dtrace_hdl_t *dtp, const dt_probe_t *prp,
}
dt_provimpl_t dt_sdt = {
- .name = "sdt",
+ .name = prvname,
.prog_type = BPF_PROG_TYPE_TRACEPOINT,
.populate = &populate,
.trampoline = &trampoline,
diff --git a/libdtrace/dt_prov_syscall.c b/libdtrace/dt_prov_syscall.c
index fd5730f3..9f3c75c9 100644
--- a/libdtrace/dt_prov_syscall.c
+++ b/libdtrace/dt_prov_syscall.c
@@ -35,7 +35,7 @@
#include "dt_probe.h"
#include "dt_pt_regs.h"
-static const char provname[] = "syscall";
+static const char prvname[] = "syscall";
static const char modname[] = "vmlinux";
#define SYSCALLSFS EVENTSFS "syscalls/"
@@ -75,7 +75,8 @@ static int populate(dtrace_hdl_t *dtp)
char buf[256];
int n = 0;
- if (!(prv = dt_provider_create(dtp, "syscall", &dt_syscall, &pattr)))
+ prv = dt_provider_create(dtp, prvname, &dt_syscall, &pattr);
+ if (prv == NULL)
return 0;
f = fopen(PROBE_LIST, "r");
@@ -114,12 +115,12 @@ static int populate(dtrace_hdl_t *dtp)
*/
if (!memcmp(p, ENTRY_PREFIX, sizeof(ENTRY_PREFIX) - 1)) {
p += sizeof(ENTRY_PREFIX) - 1;
- if (dt_probe_insert(dtp, prv, provname, modname, p,
+ if (dt_probe_insert(dtp, prv, prvname, modname, p,
"entry"))
n++;
} else if (!memcmp(p, EXIT_PREFIX, sizeof(EXIT_PREFIX) - 1)) {
p += sizeof(EXIT_PREFIX) - 1;
- if (dt_probe_insert(dtp, prv, provname, modname, p,
+ if (dt_probe_insert(dtp, prv, prvname, modname, p,
"return"))
n++;
}
@@ -299,7 +300,7 @@ static int probe_info(dtrace_hdl_t *dtp, const dt_probe_t *prp,
}
dt_provimpl_t dt_syscall = {
- .name = "syscall",
+ .name = prvname,
.prog_type = BPF_PROG_TYPE_TRACEPOINT,
.populate = &populate,
.trampoline = &trampoline,
diff --git a/libdtrace/dt_provider.h b/libdtrace/dt_provider.h
index 165852cb..0e4368ab 100644
--- a/libdtrace/dt_provider.h
+++ b/libdtrace/dt_provider.h
@@ -46,7 +46,7 @@ typedef struct dt_argdesc {
} dt_argdesc_t;
typedef struct dt_provimpl {
- char *name; /* provider generic name */
+ const char *name; /* provider generic name */
int prog_type; /* BPF program type */
int (*populate)(dtrace_hdl_t *dtp); /* register probes */
int (*probe_info)(dtrace_hdl_t *dtp, /* get probe info */
--
2.26.0
More information about the DTrace-devel
mailing list