/*! ****************************************************************************** @Function PVRSRVRemovePowerDevice @Description Removes device from power management register. Device is located by Device Index @Input ui32DeviceIndex : device index @Return PVRSRV_ERROR ******************************************************************************/ PVRSRV_ERROR PVRSRVRemovePowerDevice (IMG_UINT32 ui32DeviceIndex) { PVRSRV_DATA *psPVRSRVData = PVRSRVGetPVRSRVData(); PVRSRV_POWER_DEV *psPowerDev; /* find device in list and remove it */ psPowerDev = (PVRSRV_POWER_DEV*) List_PVRSRV_POWER_DEV_Any_va(psPVRSRVData->psPowerDeviceList, &MatchPowerDeviceIndex_AnyVaCb, ui32DeviceIndex); if (psPowerDev) { List_PVRSRV_POWER_DEV_Remove(psPowerDev); OSFreeMem(psPowerDev); /*not nulling pointer, copy on stack*/ } return (PVRSRV_OK); }
PVRSRV_ERROR PVRSRVRemovePowerDevice (IMG_UINT32 ui32DeviceIndex) { SYS_DATA *psSysData; PVRSRV_POWER_DEV *psPowerDev; SysAcquireData(&psSysData); psPowerDev = (PVRSRV_POWER_DEV*) List_PVRSRV_POWER_DEV_Any_va(psSysData->psPowerDeviceList, MatchPowerDeviceIndex_AnyVaCb, ui32DeviceIndex); if (psPowerDev) { List_PVRSRV_POWER_DEV_Remove(psPowerDev); OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(PVRSRV_POWER_DEV), psPowerDev, IMG_NULL); } return (PVRSRV_OK); }