Whenever I try to use a wildcard in my dtrace scripts with my USDT
provider I get an error complaining that the set of probes is unstable.

dtrace -n 'foo$target:::bar-* { printf("%d\n", args[0]->i); }' -c /tmp/x
dtrace: invalid probe specifier foo$target:::bar-* { printf("%d\n",
args[0]->i); }: in action list: args[ ] may not be referenced because
probe description foo4908:::bar-* matches an unstable set of probes


The  provider file looks like this:
#############################
typedef struct foo_info {
        int i;
} foo_info_t;

typedef struct finfo {
        int i;
} finfo_t;


translator finfo_t <foo_info_t *P> {
        i = P->i;
}; 

provider foo {
        probe bar__start(foo_info_t *i):
                (finfo_t i);

        probe bar__end(foo_info_t *i):
                (finfo_t i);
};

#pragma D attributes Stable/Stable/Common provider foo provider
#pragma D attributes Stable/Stable/Common provider foo module
#pragma D attributes Stable/Stable/Common provider foo function
#pragma D attributes Stable/Stable/Common provider foo name
#pragma D attributes Stable/Stable/Common provider foo args

################################



The library support file:
################################
typedef struct foo_info {
        uint32_t i;
} foo_info_t;

typedef struct finfo {
        uint32_t i;
} finfo_t;

translator finfo_t <foo_info_t *P> {
        i = *((uint32_t *)(copyin((uintptr_t)&P->i, sizeof (uint32_t))));

};
################################



The above is a contrived example but shows what I'm trying to do. How
can I make my USDT probes suitable for wildcarding?

Is this a bug?

Thanks,

-M

_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to