On Tue, Jul 21, 2009 at 2:52 AM, Matt Ingenthron<mingenth...@acm.org> wrote:
>
> I have a USDT provider in memcached which is defined as either a positive 
> value returned or -1 if there is no result.  From my DTrace script, the value 
> returned seems to be 4294967295 when I'm expecting a -1 so it seems to be 
> treating it as unsigned.  The value is defined as an int in the USDT probe 
> and the program, and isainfo -b returns 64, though I am working with a 32-bit 
> binary.
[ ... ]
>
> If I add a cast to the script, I get the expected behavior when the probe 
> fires:
>
> memcached*::command-*
> {
>  printf("key is %s, length is %d\n", copyinstr(arg1), (signed int) arg3);
> }
>
> Why should this be necessary in this case?

The types for arg0, arg1, etc., are int64_t.  In your case, you're
trying to print a negative 32-bit value, which is a positive 64-bit
value, thus the need for the cast.

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

Reply via email to