From 28259f442f355b4ee2ff7db0cb956478401e0838 Mon Sep 17 00:00:00 2001 From: Mike Nordell Date: Wed, 3 Oct 2012 17:57:14 +0000 Subject: [PATCH] [NTOSKERNEL] Refactoring KiSatisfyObjectWait macro to prevent code duplication. svn path=/trunk/; revision=57465 --- reactos/ntoskrnl/include/internal/ke_x.h | 65 ++++++------------------ 1 file changed, 16 insertions(+), 49 deletions(-) diff --git a/reactos/ntoskrnl/include/internal/ke_x.h b/reactos/ntoskrnl/include/internal/ke_x.h index def10d75fc3..9fb5e09cd1f 100644 --- a/reactos/ntoskrnl/include/internal/ke_x.h +++ b/reactos/ntoskrnl/include/internal/ke_x.h @@ -685,55 +685,6 @@ KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock) } } -// -// Satisfies the wait of any dispatcher object -// -#define KiSatisfyObjectWait(Object, Thread) \ -{ \ - /* Special case for Mutants */ \ - if ((Object)->Header.Type == MutantObject) \ - { \ - /* Decrease the Signal State */ \ - (Object)->Header.SignalState--; \ - \ - /* Check if it's now non-signaled */ \ - if (!(Object)->Header.SignalState) \ - { \ - /* Set the Owner Thread */ \ - (Object)->OwnerThread = Thread; \ - \ - /* Disable APCs if needed */ \ - Thread->KernelApcDisable = Thread->KernelApcDisable - \ - (Object)->ApcDisable; \ - \ - /* Check if it's abandoned */ \ - if ((Object)->Abandoned) \ - { \ - /* Unabandon it */ \ - (Object)->Abandoned = FALSE; \ - \ - /* Return Status */ \ - Thread->WaitStatus = STATUS_ABANDONED; \ - } \ - \ - /* Insert it into the Mutant List */ \ - InsertHeadList(Thread->MutantListHead.Blink, \ - &(Object)->MutantListEntry); \ - } \ - } \ - else if (((Object)->Header.Type & TIMER_OR_EVENT_TYPE) == \ - EventSynchronizationObject) \ - { \ - /* Synchronization Timers and Events just get un-signaled */ \ - (Object)->Header.SignalState = 0; \ - } \ - else if ((Object)->Header.Type == SemaphoreObject) \ - { \ - /* These ones can have multiple states, so we only decrease it */ \ - (Object)->Header.SignalState--; \ - } \ -} - // // Satisfies the wait of a mutant dispatcher object // @@ -786,6 +737,22 @@ KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock) } \ } +// +// Satisfies the wait of any dispatcher object +// +#define KiSatisfyObjectWait(Object, Thread) \ +{ \ + /* Special case for Mutants */ \ + if ((Object)->Header.Type == MutantObject) \ + { \ + KiSatisfyMutantWait((Object), (Thread)); \ + } \ + else \ + { \ + KiSatisfyNonMutantWait(Object); \ + } \ +} + // // Recalculates the due time // -- 2.17.1