#ifndef _DTRACE_CDDL_H_
#define _DTRACE_CDDL_H_
#include <sys/proc.h>
typedef struct kdtrace_proc {
int p_dtrace_probes;
uint64_t p_dtrace_count;
void *p_dtrace_helpers;
int p_dtrace_model;
uint64_t p_fasttrap_tp_gen;
} kdtrace_proc_t;
typedef struct kdtrace_thread {
uint8_t td_dtrace_stop;
uint8_t td_dtrace_sig;
uint8_t td_dtrace_inprobe;
u_int td_predcache;
uint64_t td_dtrace_vtime;
uint64_t td_dtrace_start;
union __tdu {
struct __tds {
uint8_t _td_dtrace_on;
uint8_t _td_dtrace_step;
uint8_t _td_dtrace_ret;
uint8_t _td_dtrace_ast;
#ifdef __amd64__
uint8_t _td_dtrace_reg;
#endif
} _tds;
u_long _td_dtrace_ft;
} _tdu;
#define td_dtrace_ft _tdu._td_dtrace_ft
#define td_dtrace_on _tdu._tds._td_dtrace_on
#define td_dtrace_step _tdu._tds._td_dtrace_step
#define td_dtrace_ret _tdu._tds._td_dtrace_ret
#define td_dtrace_ast _tdu._tds._td_dtrace_ast
#define td_dtrace_reg _tdu._tds._td_dtrace_reg
uintptr_t td_dtrace_pc;
uintptr_t td_dtrace_npc;
uintptr_t td_dtrace_scrpc;
uintptr_t td_dtrace_astpc;
#ifdef __amd64__
uintptr_t td_dtrace_regv;
#endif
uintptr_t td_dtrace_sdt_arg[1];
void *td_dtrace_sscr;
void *td_systrace_args;
uint64_t td_fasttrap_tp_gen;
struct trapframe *td_dtrace_trapframe;
void *td_kinst_tramp;
} kdtrace_thread_t;
#define t_dtrace_vtime td_dtrace->td_dtrace_vtime
#define t_dtrace_start td_dtrace->td_dtrace_start
#define t_dtrace_stop td_dtrace->td_dtrace_stop
#define t_dtrace_sig td_dtrace->td_dtrace_sig
#define t_dtrace_inprobe td_dtrace->td_dtrace_inprobe
#define t_predcache td_dtrace->td_predcache
#define t_dtrace_ft td_dtrace->td_dtrace_ft
#define t_dtrace_on td_dtrace->td_dtrace_on
#define t_dtrace_step td_dtrace->td_dtrace_step
#define t_dtrace_ret td_dtrace->td_dtrace_ret
#define t_dtrace_ast td_dtrace->td_dtrace_ast
#define t_dtrace_reg td_dtrace->td_dtrace_reg
#define t_dtrace_pc td_dtrace->td_dtrace_pc
#define t_dtrace_npc td_dtrace->td_dtrace_npc
#define t_dtrace_scrpc td_dtrace->td_dtrace_scrpc
#define t_dtrace_astpc td_dtrace->td_dtrace_astpc
#define t_dtrace_regv td_dtrace->td_dtrace_regv
#define t_dtrace_sdt_arg td_dtrace->td_dtrace_sdt_arg
#define t_dtrace_sscr td_dtrace->td_dtrace_sscr
#define t_dtrace_systrace_args td_dtrace->td_systrace_args
#define t_fasttrap_tp_gen td_dtrace->td_fasttrap_tp_gen
#define t_dtrace_trapframe td_dtrace->td_dtrace_trapframe
#define t_kinst_tramp td_dtrace->td_kinst_tramp
#define p_dtrace_helpers p_dtrace->p_dtrace_helpers
#define p_dtrace_count p_dtrace->p_dtrace_count
#define p_dtrace_probes p_dtrace->p_dtrace_probes
#define p_model p_dtrace->p_dtrace_model
#define p_fasttrap_tp_gen p_dtrace->p_fasttrap_tp_gen
#define DATAMODEL_NATIVE 0
#ifdef __amd64__
#define DATAMODEL_LP64 0
#define DATAMODEL_ILP32 1
#else
#define DATAMODEL_LP64 1
#define DATAMODEL_ILP32 0
#endif
#define p_cred p_ucred
#define p_parent p_pptr
#define t_procp td_proc
#define t_tid td_tid
#define t_did td_tid
#define t_cred td_ucred
int priv_policy(const cred_t *, int, boolean_t, int, const char *);
boolean_t priv_policy_only(const cred_t *, int, boolean_t);
boolean_t priv_policy_choice(const cred_t *, int, boolean_t);
#define PRIV_POLICY(cred, priv, all, err, reason) \
priv_policy((cred), (priv), (all), (err), (reason))
#define PRIV_POLICY_CHOICE(cred, priv, all) \
priv_policy_choice((cred), (priv), (all))
#define PRIV_POLICY_ONLY(cred, priv, all) \
priv_policy_only((cred), (priv), (all))
#endif