#ifndef _SYS_NDIFM_H
#define _SYS_NDIFM_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/ddifm.h>
#include <sys/ddifm_impl.h>
#define DMA_HANDLE 0
#define ACC_HANDLE 1
#define DEFAULT_DMACACHE_SZ 100
#define DEFAULT_ACCCACHE_SZ 10
extern int default_dmacache_sz;
extern int default_acccache_sz;
typedef struct i_ddi_fmc ndi_fmc_t;
typedef struct i_ddi_fmc_entry ndi_fmcentry_t;
typedef struct i_ndi_err {
uint64_t err_ena;
int err_status;
int err_expected;
void *err_ontrap;
struct i_ddi_fmc_entry *err_fep;
int (*err_cf)();
} ndi_err_t;
#ifdef _KERNEL
extern void ndi_fmc_insert(dev_info_t *, int, void *, void *);
extern void ndi_fmc_remove(dev_info_t *, int, const void *);
extern int ndi_fmc_error(dev_info_t *, dev_info_t *, int, uint64_t,
const void *);
extern int ndi_fmc_entry_error(dev_info_t *, int, ddi_fm_error_t *,
const void *);
extern int ndi_fmc_entry_error_all(dev_info_t *, int, ddi_fm_error_t *);
extern int ndi_fm_handler_dispatch(dev_info_t *, dev_info_t *,
const ddi_fm_error_t *);
extern int i_ddi_fm_handler_dispatch(dev_info_t *, const ddi_fm_error_t *);
extern void ndi_fm_acc_err_set(ddi_acc_handle_t, ddi_fm_error_t *);
extern void ndi_fm_dma_err_set(ddi_dma_handle_t, ddi_fm_error_t *);
#endif
#ifdef __cplusplus
}
#endif
#endif