NTSTATUS SrvElementsShutdown( VOID ) { NTSTATUS ntStatus = STATUS_SUCCESS; ntStatus = SrvTimerIndicateStop(&gSrvElements.timer); BAIL_ON_NT_STATUS(ntStatus); SrvTimerFreeContents(&gSrvElements.timer); if (gSrvElements.pHintsBuffer != NULL) { SrvFreeMemory(gSrvElements.pHintsBuffer); gSrvElements.pHintsBuffer = NULL; gSrvElements.ulHintsLength = 0; } if (gSrvElements.pStatsLock) { pthread_rwlock_destroy(&gSrvElements.statsLock); gSrvElements.pStatsLock = NULL; } SrvElementsResourcesShutdown(); error: return ntStatus; }
NTSTATUS SrvElementsShutdown( VOID ) { NTSTATUS ntStatus = STATUS_SUCCESS; ntStatus = SrvTimerIndicateStop(&gSrvElements.timer); BAIL_ON_NT_STATUS(ntStatus); SrvTimerFreeContents(&gSrvElements.timer); if (gSrvElements.pHintsBuffer != NULL) { SrvFreeMemory(gSrvElements.pHintsBuffer); gSrvElements.pHintsBuffer = NULL; gSrvElements.ulHintsLength = 0; } if (gSrvElements.pStatsLock) { pthread_rwlock_destroy(&gSrvElements.statsLock); gSrvElements.pStatsLock = NULL; } SrvElementsResourcesShutdown(); SrvElementsConfigShutdown(); if (gSrvElements.pMutex) { pthread_mutex_destroy(&gSrvElements.mutex); gSrvElements.pMutex = NULL; } if (gSrvElements.pAsyncCloseFileTracker) { SrvAsyncCloseFileTrackerWaitPending(gSrvElements.pAsyncCloseFileTracker); SrvAsyncCloseFileTrackerFree(gSrvElements.pAsyncCloseFileTracker); gSrvElements.pAsyncCloseFileTracker = NULL; } error: return ntStatus; }