static PVRSRV_ERROR FreeDeviceMem(PVRSRV_KERNEL_MEM_INFO *psMemInfo) { BM_HANDLE hBuffer; if (!psMemInfo) { return PVRSRV_ERROR_INVALID_PARAMS; } hBuffer = psMemInfo->sMemBlk.hBuffer; BM_Free(hBuffer, psMemInfo->ui32Flags); if(psMemInfo->pvSysBackupBuffer) { OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psMemInfo->ui32AllocSize, psMemInfo->pvSysBackupBuffer, IMG_NULL); psMemInfo->pvSysBackupBuffer = IMG_NULL; } OSFreeMem(PVRSRV_PAGEABLE_SELECT, sizeof(PVRSRV_KERNEL_MEM_INFO), psMemInfo, IMG_NULL); return(PVRSRV_OK); }
static PVRSRV_ERROR FreeDeviceMem2(PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_BOOL bFromAllocator) { BM_HANDLE hBuffer; if (!psMemInfo) { return PVRSRV_ERROR_INVALID_PARAMS; } hBuffer = psMemInfo->sMemBlk.hBuffer; if (bFromAllocator) BM_Free(hBuffer, psMemInfo->ui32Flags); else BM_FreeExport(hBuffer, psMemInfo->ui32Flags); if ((psMemInfo->pvSysBackupBuffer) && bFromAllocator) { OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psMemInfo->ui32AllocSize, psMemInfo->pvSysBackupBuffer, IMG_NULL); psMemInfo->pvSysBackupBuffer = IMG_NULL; } if (psMemInfo->ui32RefCount == 0) OSFreeMem(PVRSRV_PAGEABLE_SELECT, sizeof(PVRSRV_KERNEL_MEM_INFO), psMemInfo, IMG_NULL); return(PVRSRV_OK); }
static enum PVRSRV_ERROR FreeDeviceMem(struct PVRSRV_KERNEL_MEM_INFO *psMemInfo) { void *hBuffer; if (!psMemInfo) return PVRSRV_ERROR_INVALID_PARAMS; hBuffer = psMemInfo->sMemBlk.hBuffer; BM_Free(hBuffer, psMemInfo->ui32Flags); if (psMemInfo->pvSysBackupBuffer) OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psMemInfo->ui32AllocSize, psMemInfo->pvSysBackupBuffer, NULL); OSFreeMem(PVRSRV_PAGEABLE_SELECT, sizeof(struct PVRSRV_KERNEL_MEM_INFO), psMemInfo, NULL); return PVRSRV_OK; }
int bman_detach(device_t dev) { struct bman_softc *sc; sc = device_get_softc(dev); if (sc->sc_bh != NULL) BM_Free(sc->sc_bh); if (sc->sc_ires != NULL) bus_release_resource(dev, SYS_RES_IRQ, sc->sc_irid, sc->sc_ires); if (sc->sc_rres != NULL) bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_rrid, sc->sc_rres); return (0); }