summaryrefslogtreecommitdiffstats
path: root/sys/cddl/dev/sdt/sdt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cddl/dev/sdt/sdt.c')
-rw-r--r--sys/cddl/dev/sdt/sdt.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/cddl/dev/sdt/sdt.c b/sys/cddl/dev/sdt/sdt.c
index 6f0660d..6856ec7 100644
--- a/sys/cddl/dev/sdt/sdt.c
+++ b/sys/cddl/dev/sdt/sdt.c
@@ -136,6 +136,8 @@ sdt_create_probe(struct sdt_probe *probe)
char mod[DTRACE_MODNAMELEN];
char func[DTRACE_FUNCNAMELEN];
char name[DTRACE_NAMELEN];
+ const char *from;
+ char *to;
size_t len;
TAILQ_FOREACH(prov, &sdt_prov_list, prov_entry)
@@ -159,7 +161,18 @@ sdt_create_probe(struct sdt_probe *probe)
* in the C compiler, so we have to respect const vs non-const.
*/
strlcpy(func, probe->func, sizeof(func));
- strlcpy(name, probe->name, sizeof(name));
+
+ from = probe->name;
+ to = name;
+ for (len = 0; len < (sizeof(name) - 1) && *from != '\0';
+ len++, from++, to++) {
+ if (from[0] == '_' && from[1] == '_') {
+ *to = '-';
+ from++;
+ } else
+ *to = *from;
+ }
+ *to = '\0';
if (dtrace_probe_lookup(prov->id, mod, func, name) != DTRACE_IDNONE)
return;
OpenPOWER on IntegriCloud