/* INCLUDES *****************************************************************/
#include <ddk/ntddk.h>
+#include <ntos.h>
#include <internal/ke.h>
#include <internal/id.h>
#include <internal/ps.h>
/* FUNCTIONS *****************************************************************/
+/*
+ * @implemented
+ */
VOID STDCALL
KeInitializeQueue(IN PKQUEUE Queue,
IN ULONG Count OPTIONAL)
0);
InitializeListHead(&Queue->EntryListHead);
InitializeListHead(&Queue->ThreadListHead);
- Queue->RunningThreads = 0;
- Queue->MaximumThreads = (Count == 0) ? (ULONG) KeNumberProcessors : Count;
+ Queue->CurrentCount = 0;
+ Queue->MaximumCount = (Count == 0) ? (ULONG) KeNumberProcessors : Count;
}
+/*
+ * @implemented
+ */
LONG STDCALL
KeReadStateQueue(IN PKQUEUE Queue)
{
InsertTailList(&Queue->EntryListHead, Entry);
}
- if (Queue->RunningThreads < Queue->MaximumThreads && InitialState == 0)
+ if (Queue->CurrentCount < Queue->MaximumCount && InitialState == 0)
{
KeDispatcherObjectWake(&Queue->Header);
}
+/*
+ * @implemented
+ */
LONG STDCALL
KeInsertHeadQueue(IN PKQUEUE Queue,
IN PLIST_ENTRY Entry)
}
+/*
+ * @implemented
+ */
LONG STDCALL
KeInsertQueue(IN PKQUEUE Queue,
IN PLIST_ENTRY Entry)
}
+/*
+ * @implemented
+ */
PLIST_ENTRY STDCALL
KeRemoveQueue(IN PKQUEUE Queue,
IN KPROCESSOR_MODE WaitMode,
//associate with this queue
InsertHeadList(&Queue->ThreadListHead, &Thread->QueueListEntry);
- Queue->RunningThreads++;
+ Queue->CurrentCount++;
Thread->Queue = Queue;
}
- if (Queue->RunningThreads <= Queue->MaximumThreads && !IsListEmpty(&Queue->EntryListHead))
+ if (Queue->CurrentCount <= Queue->MaximumCount && !IsListEmpty(&Queue->EntryListHead))
{
ListEntry = RemoveHeadList(&Queue->EntryListHead);
Queue->Header.SignalState--;
}
+/*
+ * @implemented
+ */
PLIST_ENTRY STDCALL
KeRundownQueue(IN PKQUEUE Queue)
{