From 27f05c27a80bd3d0bc7ab991776f10367fc081ea Mon Sep 17 00:00:00 2001 From: Dmitry Gorbachev Date: Mon, 12 Oct 2009 03:27:45 +0000 Subject: [PATCH] [CHEW] - Fix formatting, comments. - Delete an empty directory. svn path=/trunk/; revision=43386 --- reactos/include/reactos/chew/chew.h | 11 +- reactos/include/reactos/chew/chew/.gitignore | 0 reactos/lib/drivers/chew/chew.rbuild | 2 +- reactos/lib/drivers/chew/workqueue.c | 151 ++++++++++--------- 4 files changed, 88 insertions(+), 76 deletions(-) delete mode 100644 reactos/include/reactos/chew/chew/.gitignore diff --git a/reactos/include/reactos/chew/chew.h b/reactos/include/reactos/chew/chew.h index 16b8ae9f9bc..cc5f166965c 100644 --- a/reactos/include/reactos/chew/chew.h +++ b/reactos/include/reactos/chew/chew.h @@ -1,7 +1,7 @@ /* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel - * FILE: include/chew/chew.h + * FILE: include/reactos/chew/chew.h * PURPOSE: Common Highlevel Executive Worker * * PROGRAMMERS: arty (ayerkes@speakeasy.net) @@ -14,15 +14,16 @@ * Initialize CHEW, given a device object (since IoAllocateWorkItem relies on * it). */ -VOID ChewInit( PDEVICE_OBJECT DeviceObject ); +VOID ChewInit(PDEVICE_OBJECT DeviceObject); + /** * Shutdown CHEW, waits for remaining work items. */ -VOID ChewShutdown(); +VOID ChewShutdown(VOID); + /** * Creates and queues a work item. */ -BOOLEAN ChewCreate -( VOID (*Worker)(PVOID), PVOID WorkerContext ); +BOOLEAN ChewCreate(VOID (*Worker)(PVOID), PVOID WorkerContext); #endif/*_REACTOS_CHEW_H*/ diff --git a/reactos/include/reactos/chew/chew/.gitignore b/reactos/include/reactos/chew/chew/.gitignore deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/reactos/lib/drivers/chew/chew.rbuild b/reactos/lib/drivers/chew/chew.rbuild index 3c1f355cf60..cf512c6f0aa 100644 --- a/reactos/lib/drivers/chew/chew.rbuild +++ b/reactos/lib/drivers/chew/chew.rbuild @@ -4,4 +4,4 @@ include workqueue.c - \ No newline at end of file + diff --git a/reactos/lib/drivers/chew/workqueue.c b/reactos/lib/drivers/chew/workqueue.c index 978e5a41ed4..81f1aad7ecb 100644 --- a/reactos/lib/drivers/chew/workqueue.c +++ b/reactos/lib/drivers/chew/workqueue.c @@ -1,82 +1,93 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: drivers/lib/chew/workqueue.c - * PURPOSE: Common Highlevel Executive Worker - * - * PROGRAMMERS: arty (ayerkes@speakeasy.net) - */ -#include -#include - -#define NDEBUG - +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: lib/drivers/chew/workqueue.c + * PURPOSE: Common Highlevel Executive Worker + * + * PROGRAMMERS: arty (ayerkes@speakeasy.net) + */ + +#include +#include + +#define NDEBUG +//#include + #define FOURCC(w,x,y,z) (((w) << 24) | ((x) << 16) | ((y) << 8) | (z)) -#define CHEW_TAG FOURCC('C','H','E','W') - -PDEVICE_OBJECT WorkQueueDevice; -LIST_ENTRY WorkQueue; +#define CHEW_TAG FOURCC('C','H','E','W') + +PDEVICE_OBJECT WorkQueueDevice; +LIST_ENTRY WorkQueue; KSPIN_LOCK WorkQueueLock; -KEVENT WorkQueueClear; - -typedef struct _WORK_ITEM { - LIST_ENTRY Entry; - PIO_WORKITEM WorkItem; - VOID (*Worker)( PVOID WorkerContext ); - PVOID WorkerContext; -} WORK_ITEM, *PWORK_ITEM; - -VOID ChewInit( PDEVICE_OBJECT DeviceObject ) { - WorkQueueDevice = DeviceObject; - InitializeListHead( &WorkQueue ); - KeInitializeSpinLock( &WorkQueueLock ); - KeInitializeEvent(&WorkQueueClear, NotificationEvent, TRUE); -} - -VOID ChewShutdown() { - KeWaitForSingleObject(&WorkQueueClear, Executive, KernelMode, FALSE, NULL); -} - -VOID NTAPI ChewWorkItem( PDEVICE_OBJECT DeviceObject, PVOID ChewItem ) { +KEVENT WorkQueueClear; + +typedef struct _WORK_ITEM +{ + LIST_ENTRY Entry; + PIO_WORKITEM WorkItem; + VOID (*Worker)(PVOID WorkerContext); + PVOID WorkerContext; +} WORK_ITEM, *PWORK_ITEM; + +VOID ChewInit(PDEVICE_OBJECT DeviceObject) +{ + WorkQueueDevice = DeviceObject; + InitializeListHead(&WorkQueue); + KeInitializeSpinLock(&WorkQueueLock); + KeInitializeEvent(&WorkQueueClear, NotificationEvent, TRUE); +} + +VOID ChewShutdown(VOID) +{ + KeWaitForSingleObject(&WorkQueueClear, Executive, KernelMode, FALSE, NULL); +} + +VOID NTAPI ChewWorkItem(PDEVICE_OBJECT DeviceObject, PVOID ChewItem) +{ PWORK_ITEM WorkItem = ChewItem; - KIRQL OldIrql; - - WorkItem->Worker( WorkItem->WorkerContext ); - - IoFreeWorkItem( WorkItem->WorkItem ); + KIRQL OldIrql; + + WorkItem->Worker(WorkItem->WorkerContext); + + IoFreeWorkItem(WorkItem->WorkItem); KeAcquireSpinLock(&WorkQueueLock, &OldIrql); RemoveEntryList(&WorkItem->Entry); if (IsListEmpty(&WorkQueue)) KeSetEvent(&WorkQueueClear, 0, FALSE); + KeReleaseSpinLock(&WorkQueueLock, OldIrql); - ExFreePoolWithTag(WorkItem, CHEW_TAG); -} - -BOOLEAN ChewCreate -( VOID (*Worker)( PVOID ), PVOID WorkerContext ) { + ExFreePoolWithTag(WorkItem, CHEW_TAG); +} + +BOOLEAN ChewCreate(VOID (*Worker)(PVOID), PVOID WorkerContext) +{ PWORK_ITEM Item; - Item = ExAllocatePoolWithTag - ( NonPagedPool, - sizeof( WORK_ITEM ), - CHEW_TAG ); - - if( Item ) { - Item->WorkItem = IoAllocateWorkItem( WorkQueueDevice ); - if( !Item->WorkItem ) { - ExFreePool( Item ); - return FALSE; - } - Item->Worker = Worker; - Item->WorkerContext = WorkerContext; - ExInterlockedInsertTailList( &WorkQueue, &Item->Entry, &WorkQueueLock ); - KeResetEvent(&WorkQueueClear); - IoQueueWorkItem( Item->WorkItem, ChewWorkItem, DelayedWorkQueue, Item ); - - return TRUE; - } else { - return FALSE; - } -} + Item = ExAllocatePoolWithTag(NonPagedPool, + sizeof(WORK_ITEM), + CHEW_TAG); + + if (Item) + { + Item->WorkItem = IoAllocateWorkItem(WorkQueueDevice); + if (!Item->WorkItem) + { + ExFreePool(Item); + return FALSE; + } + + Item->Worker = Worker; + Item->WorkerContext = WorkerContext; + ExInterlockedInsertTailList(&WorkQueue, &Item->Entry, &WorkQueueLock); + KeResetEvent(&WorkQueueClear); + IoQueueWorkItem(Item->WorkItem, ChewWorkItem, DelayedWorkQueue, Item); + + return TRUE; + } + else + { + return FALSE; + } +}