Our driver called the following API to install interrupt handler:
viStatus = viInstallHandler(aSession, VI_EVENT_PXI_INTR, pfRoutine, (ViAddr)parameter);
With the help of a PCI analyzer, I noticed that our Interrupt Service Routine pfRoutine was called with 1.3ms delay from when the interrupt was fired. I found that pfRoutine is actually a user space call back function. Our driver is in the User space too.
Is there a way to make a Kernel Interrupt Service call directly? Or we have to re-design our driver in Kernel space. How can we do it?