diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_export.h b/QDMA/linux-kernel/driver/libqdma/libqdma_export.h index 1ed6fbaf356d7c7cddc02e87d861a5bf66c894ba..f9b2eb325014d39d4c06995c4518e5c7116f0584 100644 --- a/QDMA/linux-kernel/driver/libqdma/libqdma_export.h +++ b/QDMA/linux-kernel/driver/libqdma/libqdma_export.h @@ -470,6 +470,7 @@ struct qdma_dev_conf { u32 bdf; /** index of device in device list */ u32 idx; +#ifndef __XRT__ /** * @brief user interrupt, if null, default libqdma handler is used * @@ -477,7 +478,16 @@ struct qdma_dev_conf { * @param uld upper layer data, i.e. callback data */ void (*fp_user_isr_handler)(unsigned long dev_hndl, unsigned long uld); - +#else + /** + * @brief user interrupt, if null, default libqdma handler is used + * + * @param dev_hndl Device Handler + * @param irq_index Interrupt index + * @param uld upper layer data, i.e. callback data + */ + void (*fp_user_isr_handler)(unsigned long dev_hndl,int irq_index, unsigned long uld); +#endif /** * @brief Q interrupt top, * per-device addtional handling code diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_intr.c b/QDMA/linux-kernel/driver/libqdma/qdma_intr.c index f204299c64538f1e1a092e145bc3b72198038d04..8de030dbd4618ab505b7f3b7abdb0fa4e93c1996 100644 --- a/QDMA/linux-kernel/driver/libqdma/qdma_intr.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_intr.c @@ -119,9 +119,15 @@ static irqreturn_t user_intr_handler(int irq_index, int irq, void *dev_id) pr_info("User IRQ fired on Funtion#%d: index=%d, vector=%d\n", xdev->func_id, irq_index, irq); - if (xdev->conf.fp_user_isr_handler) + if (xdev->conf.fp_user_isr_handler) { +#ifndef __XRT__ xdev->conf.fp_user_isr_handler((unsigned long)xdev, xdev->conf.uld); +#else + xdev->conf.fp_user_isr_handler((unsigned long)xdev, + irq_index, xdev->conf.uld); +#endif + } return IRQ_HANDLED; }