return dtrace_gethrtime();
}
+#if 0
#define STACKTRACE_KERNEL 0x01
#define STACKTRACE_USER 0x02
#define STACKTRACE_SKIP 0x10
int flags;
};
-static void dtrace_stacktrace_warning(void *data, char *msg)
-{
-}
-
-static void dtrace_stacktrace_warning_symbol(void *data, char *msg,
- unsigned long symbol)
-{
-}
-
static int dtrace_stacktrace_stack(void *data, char *name)
{
struct stacktrace_state *st = (struct stacktrace_state *)data;
}
static const struct stacktrace_ops dtrace_tracetrace_ops = {
- .warning = dtrace_stacktrace_warning,
- .warning_symbol = dtrace_stacktrace_warning_symbol,
.stack = dtrace_stacktrace_stack,
.address = dtrace_stacktrace_address,
.walk_stack = print_context_stack
};
+static const struct stacktrace_ops dtrace_tracetrace_ops_alt = {
+ .stack = dtrace_stacktrace_stack,
+ .address = dtrace_stacktrace_address,
+ .walk_stack = dtrace_stacktrace_walk_stack
+};
+#endif
+
void dtrace_getpcstack(uint64_t *pcstack, int pcstack_limit, int aframes,
uint32_t *intrpc)
{
STACKTRACE_KERNEL
};
+#if 0
dump_trace(NULL, NULL, NULL, 0, &dtrace_tracetrace_ops, &st);
+#else
+ dtrace_stacktrace(&st);
+#endif
while (st.depth < st.limit)
pcstack[st.depth++] = 0;
STACKTRACE_USER
};
+#if 0
dump_trace(NULL, NULL, NULL, 0, &dtrace_tracetrace_ops, &st);
+#else
+ dtrace_stacktrace(&st);
+#endif
while (st.depth < st.limit)
pcstack[st.depth++] = 0;
}
-static const struct stacktrace_ops dtrace_tracetrace_ops_alt = {
- .warning = dtrace_stacktrace_warning,
- .warning_symbol = dtrace_stacktrace_warning_symbol,
- .stack = dtrace_stacktrace_stack,
- .address = dtrace_stacktrace_address,
- .walk_stack = dtrace_stacktrace_walk_stack
-};
-
void dtrace_getufpstack(uint64_t *pcstack, uint64_t *fpstack,
int pcstack_limit)
{
STACKTRACE_USER
};
+#if 0
dump_trace(NULL, NULL, NULL, 0, &dtrace_tracetrace_ops_alt, &st);
+#else
+ dtrace_stacktrace(&st);
+#endif
while (st.depth < st.limit) {
fpstack[st.depth] = 0;
STACKTRACE_KERNEL
};
+#if 0
dump_trace(NULL, NULL, NULL, 0, &dtrace_tracetrace_ops, &st);
+#else
+ dtrace_stacktrace(&st);
+#endif
if (st.depth <= aframes)
return 0;
STACKTRACE_USER
};
+#if 0
dump_trace(NULL, NULL, NULL, 0, &dtrace_tracetrace_ops, &st);
+#else
+ dtrace_stacktrace(&st);
+#endif
return st.depth;
}
#include "dtrace.h"
-typedef void (*sys_call_ptr_t)(void);
-typedef long (*dt_sys_call_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t,
- uintptr_t, uintptr_t);
-
-typedef struct dtrace_syscalls {
- const char *name;
- dtrace_id_t stsy_entry;
- dtrace_id_t stsy_return;
- dt_sys_call_t stsy_underlying;
- sys_call_ptr_t *stsy_tblent;
-} dtrace_syscalls_t;
-
-typedef void (*dtrace_systrace_probe_t)(dtrace_id_t, uintptr_t, uintptr_t,
- uintptr_t, uintptr_t, uintptr_t,
- uintptr_t);
-
-typedef struct systrace_info {
- dtrace_systrace_probe_t *probep;
- dtrace_systrace_probe_t stub;
- dt_sys_call_t syscall;
- dtrace_syscalls_t sysent[NR_syscalls];
-} systrace_info_t;
-
-extern systrace_info_t *dtrace_syscalls_init(void);
-
extern void systrace_provide(void *, const dtrace_probedesc_t *);
extern int systrace_enable(void *arg, dtrace_id_t, void *);
extern void systrace_disable(void *arg, dtrace_id_t, void *);