improve readability by removing obsolete gotos and for loops where appropriate Modified: trunk/reactos/ntoskrnl/ke/wait.c _____
Modified: trunk/reactos/ntoskrnl/ke/wait.c --- trunk/reactos/ntoskrnl/ke/wait.c 2005-03-22 07:29:02 UTC (rev 14266) +++ trunk/reactos/ntoskrnl/ke/wait.c 2005-03-22 17:17:02 UTC (rev 14267) @@ -250,7 +250,7 @@
/* It has a normal signal state, so unwait it and return */ KiSatisfyObjectWait(CurrentObject, CurrentThread); Status = STATUS_WAIT_0; - goto WaitDone; + break;
} else {
@@ -285,7 +285,7 @@
/* Return a timeout */ Status = STATUS_TIMEOUT; - goto WaitDone; + break; }
/* Point to Timer Wait Block and Thread Timer */ @@ -311,7 +311,7 @@
/* Return a timeout if we couldn't insert the timer for some reason */ Status = STATUS_TIMEOUT; - goto WaitDone; + break; } }
@@ -344,7 +344,6 @@
} while (TRUE);
-WaitDone: /* Release the Lock, we are done */ DPRINT("Returning from KeWaitForMultipleObjects(), %x. Status: %d\n", KeGetCurrentThread(), Status); KeReleaseDispatcherDatabaseLock(CurrentThread->WaitIrql); @@ -369,7 +368,7 @@ PKWAIT_BLOCK TimerWaitBlock; PKTIMER ThreadTimer; PKTHREAD CurrentThread = KeGetCurrentThread(); - ULONG AllObjectsSignaled; + BOOLEAN AllObjectsSignaled; ULONG WaitIndex; NTSTATUS Status; NTSTATUS WaitStatus; @@ -507,7 +506,7 @@ /* Satisfy their Waits and return to the caller */ KiSatisifyMultipleObjectWaits(WaitBlock); Status = STATUS_WAIT_0; - goto WaitDone; + break; }
/* Make sure we can satisfy the Alertable request */ @@ -524,7 +523,7 @@
/* Return a timeout */ Status = STATUS_TIMEOUT; - goto WaitDone; + break; }
/* Point to Timer Wait Block and Thread Timer */ @@ -549,22 +548,20 @@
/* Return a timeout if we couldn't insert the timer for some reason */ Status = STATUS_TIMEOUT; - goto WaitDone; + break; } }
/* Insert into Object's Wait List*/ - WaitBlock = CurrentThread->WaitBlockList; - while (WaitBlock) { + for (WaitBlock = CurrentThread->WaitBlockList; + WaitBlock != NULL; + WaitBlock = WaitBlock->NextWaitBlock) {
/* Get the Current Object */ CurrentObject = WaitBlock->Object;
/* Link the Object to this Wait Block */ InsertTailList(&CurrentObject->WaitListHead, &WaitBlock->WaitListEntry); - - /* Move to the next Wait Block */ - WaitBlock = WaitBlock->NextWaitBlock; }
/* Handle Kernel Queues */ @@ -660,8 +657,10 @@ /* Loop the Wait Entries */ DPRINT("KiWaitTest for Object: %x\n", Object); WaitList = &Object->WaitListHead; - WaitEntry = WaitList->Flink; - while ((WaitEntry != WaitList) && (Object->SignalState > 0)) { + + for (WaitEntry = WaitList->Flink; + (WaitEntry != WaitList) && (Object->SignalState > 0); + WaitEntry = WaitEntry->Flink) {
/* Get the current wait block */ CurrentWaitBlock = CONTAINING_RECORD(WaitEntry, KWAIT_BLOCK, WaitListEntry); @@ -678,21 +677,19 @@
/* Everything must be satisfied */ DPRINT("Checking for a Wait All\n"); - NextWaitBlock = CurrentWaitBlock->NextWaitBlock;
/* Loop first to make sure they are valid */ - while (NextWaitBlock) { + for (NextWaitBlock = CurrentWaitBlock->NextWaitBlock; + NextWaitBlock != NULL; + NextWaitBlock = NextWaitBlock->NextWaitBlock) {
/* Check if the object is signaled */ if (!KiIsObjectSignaled(Object, CurrentWaitBlock->Thread)) {
/* It's not, move to the next one */ DPRINT1("One of the object is non-signaled, sorry.\n"); - goto SkipUnwait; + continue; } - - /* Go to the next Wait block */ - NextWaitBlock = NextWaitBlock->NextWaitBlock; }
/* All the objects are signaled, we can satisfy */ @@ -704,10 +701,6 @@ /* All waits satisfied, unwait the thread */ DPRINT("Unwaiting the Thread\n"); KiAbortWaitThread(CurrentWaitBlock->Thread, CurrentWaitBlock->WaitKey, Increment); - -SkipUnwait: - /* Next entry */ - WaitEntry = WaitEntry->Flink; }
DPRINT("Done\n"); @@ -728,15 +721,14 @@
/* Remove the Wait Blocks from the list */ DPRINT("Removing waits\n"); - WaitBlock = Thread->WaitBlockList; - while (WaitBlock) { + + for (WaitBlock = Thread->WaitBlockList; + WaitBlock != NULL; + WaitBlock = WaitBlock->NextWaitBlock) {
/* Remove it */ DPRINT("Removing Waitblock: %x, %x\n", WaitBlock, WaitBlock->NextWaitBlock); RemoveEntryList(&WaitBlock->WaitListEntry); - - /* Go to the next one */ - WaitBlock = WaitBlock->NextWaitBlock; };
/* Check if there's a Thread Timer */