#ifndef BTRACE_H
#define BTRACE_H
#include <dev/dt/dtvar.h>
#ifndef nitems
#define nitems(_a) (sizeof((_a)) / sizeof((_a)[0]))
#endif
struct dt_evt;
struct bt_arg;
struct bt_var;
struct bt_stmt;
const char * ba_name(struct bt_arg *);
long ba2long(struct bt_arg *, struct dt_evt *);
const char *ba2str(struct bt_arg *, struct dt_evt *);
long bacmp(struct bt_arg *, struct bt_arg *);
struct syms;
struct syms *kelf_open_kernel(const char *);
void kelf_close(struct syms *);
int kelf_snprintsym_proc(int, pid_t, char *, size_t,
unsigned long);
int kelf_snprintsym_kernel(struct syms *, char *, size_t,
unsigned long);
struct map;
struct hist;
struct map *map_new(void);
void map_clear(struct map *);
void map_delete(struct map *, const char *);
struct bt_arg *map_get(struct map *, const char *);
void map_insert(struct map *, const char *, void *);
void map_print(struct map *, size_t, const char *);
void map_zero(struct map *);
struct hist *hist_new(long);
void hist_increment(struct hist *, const char *);
void hist_print(struct hist *, const char *);
#define KLEN 1024
#define STRLEN 128
int stmt_printf(struct bt_stmt *, struct dt_evt *);
extern const char *const syscallnames[];
#endif