IMG_VOID ServerSyncDeinit(IMG_VOID) { PVRSRVUnregisterDbgRequestNotify(g_hNotify); OSLockDestroy(g_hListLock); #if defined(PVRSRV_ENABLE_FULL_SYNC_TRACKING) OSLockAcquire(g_hSyncRecordListLock); dllist_foreach_node(&g_sSyncRecordList, _SyncRecordListDestroy, IMG_NULL); OSLockRelease(g_hSyncRecordListLock); PVRSRVUnregisterDbgRequestNotify(g_hSyncRecordNotify); OSLockDestroy(g_hSyncRecordListLock); #endif }
PVRSRV_ERROR ServerSyncInit(IMG_VOID) { PVRSRV_ERROR eError; eError = OSLockCreate(&g_hListLock, LOCK_TYPE_NONE); if (eError != PVRSRV_OK) { goto fail_lock_create; } dllist_init(&g_sAllServerSyncs); eError = PVRSRVRegisterDbgRequestNotify(&g_hNotify, _ServerSyncDebugRequest, DEBUG_REQUEST_SERVERSYNC, IMG_NULL); if (eError != PVRSRV_OK) { goto fail_dbg_register; } #if defined(PVRSRV_ENABLE_FULL_SYNC_TRACKING) eError = SyncRecordListInit(); if (eError != PVRSRV_OK) { goto fail_record_list; } #endif return PVRSRV_OK; #if defined(PVRSRV_ENABLE_FULL_SYNC_TRACKING) fail_record_list: PVRSRVUnregisterDbgRequestNotify(g_hNotify); #endif fail_dbg_register: OSLockDestroy(g_hListLock);; fail_lock_create: return eError; }
IMG_VOID ServerSyncDeinit(IMG_VOID) { PVRSRVUnregisterDbgRequestNotify(g_hNotify); OSLockDestroy(g_hListLock); }