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