DTrace/FreeBSD source snapshot
Andrew Pogrebennyk
marduk at portaone.com
Fri Feb 1 22:47:11 UTC 2008
Andrew Gallatin wrote:
> Andrew Pogrebennyk writes:
> > In function 'dtrace_ioctl':
> > /usr/src/sys/modules/dtrace/dtrace/../../../cddl/dev/dtrace/dtrace_ioctl.c:294:
> > warning: format '%zd' expects type 'signed size_t', but argument 4 has
> > type 'uint64_t'
> > *** Error code 1
>
> I'm on amd64, so I did not see these warnings :)
>
> BTW, if you forget options KTDTRACE_HOOKS, and try to
> preload dtraceall, things explode rather spectacularly:
>
> [...]
>
> <repeating traps forever>
>
>
> I then rebuilt with KDTRACE_HOOKS. This time, I had
> another missing symbol (syscallnames). I'm about out of time
> for today..
>
> Drew
OK, thanks for interesting info. However I got stuck with kernel module
compilation. There were two minor discrepancies between
/usr/src/sys/cddl/dev/dtrace/i386/dtrace_subr.c and
/usr/src/sys/sys/dtrace_bsd.h (different types if declaration and
definition of dtrace_trap() function and missing declaration of
dtrace_sync_func()). I solved that and now it complains on the word
"type" in dtrace_trap():
/usr/src/sys/modules/dtrace/dtrace/../../../cddl/dev/dtrace/i386/dtrace_subr.c:
In function 'dtrace_trap':
/usr/src/sys/modules/dtrace/dtrace/../../../cddl/dev/dtrace/i386/dtrace_subr.c:438:
error: 'type' undeclared (first use in this function)
Indeed, where it should be taken from?
/* Function to handle DTrace traps during probes. See i386/i386/trap.c */
int
dtrace_trap(struct trapframe *frame)
{
/*
* A trap can occur while DTrace executes a probe. Before
* executing the probe, DTrace blocks re-scheduling and sets
* a flag in it's per-cpu flags to indicate that it doesn't
* want to fault. On returning from the the probe, the no-fault
* flag is cleared and finally re-scheduling is enabled.
*
* Check if DTrace has enabled 'no-fault' mode:
*
*/
if ((cpu_core[curcpu].cpuc_dtrace_flags & CPU_DTRACE_NOFAULT)
!= 0) {
/*
* There are only a couple of trap types that are expected.
* All the rest will be handled in the usual way.
*/
switch (type) {
/* General protection fault. */
case T_PROTFLT:
/* Flag an illegal operation. */
[...]
--
Sincerely,
Andrew Pogrebennyk
More information about the freebsd-current
mailing list