The dtmalloc provider uses the short description of a malloc type as the

function name of its corresponding DTrace probes. These descriptions may
contain whitespace, but probe names cannot, so just replace any whitespace
with underscores when creating probes.

MFC after:	1 week
This commit is contained in:
Mark Johnston 2013-06-28 03:14:40 +00:00
parent 19d8e1c74a
commit 837610eb04

@ -28,6 +28,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/ctype.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/module.h>
@ -111,8 +112,17 @@ dtmalloc_type_cb(struct malloc_type *mtp, void *arg __unused)
{
char name[DTRACE_FUNCNAMELEN];
struct malloc_type_internal *mtip = mtp->ks_handle;
int i;
/*
* malloc_type descriptions are allowed to contain whitespace, but
* DTrace probe identifiers are not, so replace the whitespace with
* underscores.
*/
strlcpy(name, mtp->ks_shortdesc, sizeof(name));
for (i = 0; name[i] != 0; i++)
if (isspace(name[i]))
name[i] = '_';
if (dtrace_probe_lookup(dtmalloc_id, NULL, name, "malloc") != 0)
return;