--- /dev/null
+/**
+ * \file physio/meta_intr.h
+ */
+#ifndef _PHYSIO_META_INTR_H_
+#define _PHYSIO_META_INTR_H_
+
+#include <udi.h>
+#include <udi_physio.h>
+#include "pio.h"
+
+typedef struct udi_intr_attach_cb_s udi_intr_attach_cb_t;
+typedef void udi_intr_attach_req_op_t(udi_intr_attach_cb_t *intr_attach_cb);
+typedef void udi_intr_attach_ack_op_t(
+ udi_intr_attach_cb_t *intr_attach_cb,
+ udi_status_t status
+ );
+typedef struct udi_intr_detach_cb_s udi_intr_detach_cb_t;
+typedef void udi_intr_detach_req_op_t(udi_intr_detach_cb_t *intr_detach_cb);
+typedef void udi_intr_detach_ack_op_t(udi_intr_detach_cb_t *intr_detach_cb);
+typedef const struct udi_intr_handler_ops_s udi_intr_handler_ops_t;
+typedef const struct udi_intr_dispatcher_ops_s udi_intr_dispatcher_ops_t;
+typedef struct udi_intr_event_cb_s udi_intr_event_cb_t;
+typedef void udi_intr_event_ind_op_t(udi_intr_event_cb_t *intr_event_cb, udi_ubit8_t flags);
+typedef void udi_intr_event_rdy_op_t(udi_intr_event_cb_t *intr_event_cb);
+
+
+struct udi_intr_attach_cb_s
+{
+ udi_cb_t gcb;
+ udi_index_t interrupt_idx;
+ udi_ubit8_t min_event_pend;
+ udi_pio_handle_t preprocessing_handle;
+};
+/* Bridge Attach Control Block Group Number */
+#define UDI_BUS_INTR_ATTACH_CB_NUM 2
+
+struct udi_intr_detach_cb_s
+{
+ udi_cb_t gcb;
+ udi_index_t interrupt_idx;
+};
+/* Bridge Detach Control Block Group Number */
+#define UDI_BUS_INTR_DETACH_CB_NUM 3
+
+struct udi_intr_handler_ops_s
+{
+ udi_channel_event_ind_op_t *channel_event_ind_op;
+ udi_intr_event_ind_op_t *intr_event_ind_op;
+};
+/* Interrupt Handler Ops Vector Number */
+#define UDI_BUS_INTR_HANDLER_OPS_NUM 3
+
+struct udi_intr_dispatcher_ops_s
+{
+ udi_channel_event_ind_op_t *channel_event_ind_op;
+ udi_intr_event_rdy_op_t *intr_event_rdy_op;
+};
+/* Interrupt Dispatcher Ops Vector Number */
+#define UDI_BUS_INTR_DISPATCH_OPS_NUM 4
+
+struct udi_intr_event_cb_s
+{
+ udi_cb_t gcb;
+ udi_buf_t *event_buf;
+ udi_ubit16_t intr_result;
+};
+/* Flag values for interrupt handling */
+#define UDI_INTR_UNCLAIMED (1U<<0)
+#define UDI_INTR_NO_EVENT (1U<<1)
+/* Bus Interrupt Event Control Block Group Number */
+#define UDI_BUS_INTR_EVENT_CB_NUM 4
+
+
+
+extern void udi_intr_attach_req(udi_intr_attach_cb_t *intr_attach_cb);
+extern void udi_intr_attach_ack(udi_intr_attach_cb_t *intr_attach_cb, udi_status_t status);
+//extern void udi_intr_attach_ack_unused(udi_intr_attach_cb_t *intr_attach_cb, udi_status_t status);
+
+extern void udi_intr_detach_req(udi_intr_detach_cb_t *intr_detach_cb);
+extern void udi_intr_detach_ack(udi_intr_detach_cb_t *intr_detach_cb);
+//extern void udi_intr_detach_ack_unused(udi_intr_detach_cb_t *intr_detach_cb);
+
+
+extern void udi_intr_event_ind(udi_intr_event_cb_t *intr_event_cb, udi_ubit8_t flags);
+/**
+ * \brief Values for ::udi_intr_event_ind \a flags
+ * \{
+ */
+#define UDI_INTR_MASKING_NOT_REQUIRED (1U<<0)
+#define UDI_INTR_OVERRUN_OCCURRED (1U<<1)
+#define UDI_INTR_PREPROCESSED (1U<<2)
+/**
+ * \}
+ */
+
+extern void udi_intr_event_rdy(udi_intr_event_cb_t *intr_event_cb);
+
+
+
+#endif