Jürgen Keil
2008-Aug-04 13:35 UTC
[dtrace-discuss] 64-bit return values with fbt provider on 32-bit kernel
Is there any way to access the full 64-bit "long long" return value from the return probe of the fbt provider, when running on the 32-bit Solaris x86 kernel? E.g. how do I get access at the full 64-bit hrtime_t result from the kernel''s gethrtime() function? # isainfo -kv 32-bit i386 kernel modules # dtrace -n ''fbt::gethrtime:return { printf("%llx", args[1]); }'' ... prints lots of 32-bit values; the high order 32-bits from hrtime_t are lost ... And it seems that a similar problem exists for 64-bit arguments and the entry probe; but in this case I can work around the problem by assembling the full 64-bit argument from two raw argN argN+1 values: This works: # dtrace -n ''fbt::new_cpu_mstate:entry { printf("%llx", (arg2 << 32) | arg1); }'' But this doesn''t: # dtrace -n ''fbt::new_cpu_mstate:entry { printf("%llx", args[1]); }'' -- This message posted from opensolaris.org
Bhaskar Sarkar
2008-Aug-04 13:57 UTC
[dtrace-discuss] 64-bit return values with fbt provider on 32-bit kernel
> > But this doesn''t: > # dtrace -n ''fbt::new_cpu_mstate:entry { printf("%llx", args[1]); }'' >void new_cpu_mstate(int cmstate, hrtime_t curtime) Try ((arg1 << 32) | arg2), the way this function would receive curtime in the parameter. Sorry, I didn''t verify it. -- Bhaskar