IMG_VOID IMG_CALLCONV PVRSRVMISR(IMG_VOID *pvSysData) { SYS_DATA *psSysData = pvSysData; if(!psSysData) { PVR_DPF((PVR_DBG_ERROR, "PVRSRVMISR: Invalid params\n")); return; } List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList, &PVRSRVMISR_ForEachCb); if (PVRSRVProcessQueues(IMG_FALSE) == PVRSRV_ERROR_PROCESSING_BLOCKED) { PVRSRVProcessQueues(IMG_FALSE); } if (psSysData->psGlobalEventObject) { IMG_HANDLE hOSEventKM = psSysData->psGlobalEventObject->hOSEventKM; if(hOSEventKM) { OSEventObjectSignalKM(hOSEventKM); } } }
/*! ****************************************************************************** @Function PVRSRVMISR @Input pvSysData @Description OS-independent Medium-level Interrupt Service Routine ******************************************************************************/ IMG_VOID IMG_CALLCONV PVRSRVMISR(IMG_VOID *pvSysData) { SYS_DATA *psSysData = pvSysData; /* PVRSRV_DEVICE_NODE *psDeviceNode; */ if(!psSysData) { PVR_DPF((PVR_DBG_ERROR, "PVRSRVMISR: Invalid params\n")); return; } /* Traverse the devices' MISR handlers. */ List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList, &PVRSRVMISR_ForEachCb); #if defined(SUPPORT_PVRSRV_DEVICE_CLASS) /* Process the queues. */ if (PVRSRVProcessQueues(IMG_FALSE) == PVRSRV_ERROR_PROCESSING_BLOCKED) { PVRSRVProcessQueues(IMG_FALSE); } #endif /* defined(SUPPORT_PVRSRV_DEVICE_CLASS) */ /* signal global event object */ if (psSysData->psGlobalEventObject) { IMG_HANDLE hOSEventKM = psSysData->psGlobalEventObject->hOSEventKM; if(hOSEventKM) { OSEventObjectSignalKM(hOSEventKM); } } }
IMG_VOID PVRSRVScheduleDeviceCallbacks(IMG_VOID) { SYS_DATA *psSysData; SysAcquireData(&psSysData); List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList, &PVRSRVCommandCompleteCallbacks_ForEachCb); }
/*! ****************************************************************************** @Function PVRSRVScheduleDeviceCallbacks @Description Schedule all device callbacks @Return IMG_VOID ******************************************************************************/ IMG_VOID PVRSRVScheduleDeviceCallbacks(IMG_VOID) { SYS_DATA *psSysData; /* PVRSRV_DEVICE_NODE *psDeviceNode;*/ SysAcquireData(&psSysData); /*for all the device, invoke the callback function*/ List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList, &PVRSRVCommandCompleteCallbacks_ForEachCb); }