From 064558a69281398d1dc6873453449eee9b3a8d8d Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 28 Oct 2013 01:06:47 -0400 Subject: [PATCH] Windows: RDRLib Worker Thread shutdown The thread waiting to unload the library is polling the state of the AFS_WORKER_INITIALIZED flag in the PoolContext->State field for each worker. Ensure that the thread performs no actions other than PsTerminateSystemThread() after clearing the AFS_WORKER_INITIALIZED flag. Change-Id: I0baa92f05a5d5f00219a2cc63ca71c7a6a1f52b5 Reviewed-on: http://gerrit.openafs.org/10383 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp b/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp index f42860cf9..ed912c394 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp @@ -790,14 +790,14 @@ AFSWorkerThread( IN PVOID Context) } } // worker thread loop - ClearFlag( pPoolContext->State, AFS_WORKER_INITIALIZED); - // Wake up another worker so they too can exit KeSetEvent( &pControlDevExt->Specific.Control.WorkerQueueHasItems, 0, FALSE); + ClearFlag( pPoolContext->State, AFS_WORKER_INITIALIZED); + PsTerminateSystemThread( 0); return; @@ -940,14 +940,14 @@ AFSIOWorkerThread( IN PVOID Context) } } // worker thread loop - ClearFlag( pPoolContext->State, AFS_WORKER_INITIALIZED); - // Wake up another IOWorker so they too can exit KeSetEvent( &pControlDevExt->Specific.Control.IOWorkerQueueHasItems, 0, FALSE); + ClearFlag( pPoolContext->State, AFS_WORKER_INITIALIZED); + PsTerminateSystemThread( 0); return; -- 2.39.5