mirror of
https://github.com/reactos/reactos.git
synced 2024-07-02 10:45:24 +00:00
[DRIVERS][NTOSKRNL]
Don't use PWORK_QUEUE_ITEM casts in ExQueueWorkItem calls, but use the explicit underlaying work queue item object instead. svn path=/trunk/; revision=71330
This commit is contained in:
parent
fb35282eb3
commit
a8924f81c4
|
@ -112,7 +112,7 @@ typedef struct _DEVICE_INFORMATION_ENTRY
|
||||||
|
|
||||||
typedef struct _ONLINE_NOTIFICATION_WORK_ITEM
|
typedef struct _ONLINE_NOTIFICATION_WORK_ITEM
|
||||||
{
|
{
|
||||||
WORK_QUEUE_ITEM; // 0x00
|
WORK_QUEUE_ITEM WorkItem; // 0x00
|
||||||
PDEVICE_EXTENSION DeviceExtension; // 0x10
|
PDEVICE_EXTENSION DeviceExtension; // 0x10
|
||||||
UNICODE_STRING SymbolicName; // 0x14
|
UNICODE_STRING SymbolicName; // 0x14
|
||||||
} ONLINE_NOTIFICATION_WORK_ITEM, *PONLINE_NOTIFICATION_WORK_ITEM; // 0x1C
|
} ONLINE_NOTIFICATION_WORK_ITEM, *PONLINE_NOTIFICATION_WORK_ITEM; // 0x1C
|
||||||
|
|
|
@ -119,11 +119,11 @@ SendOnlineNotificationWorker(IN PVOID Parameter)
|
||||||
{
|
{
|
||||||
/* Queue a new one for execution */
|
/* Queue a new one for execution */
|
||||||
Head = RemoveHeadList(&(DeviceExtension->OnlineNotificationListHead));
|
Head = RemoveHeadList(&(DeviceExtension->OnlineNotificationListHead));
|
||||||
NewWorkItem = CONTAINING_RECORD(Head, ONLINE_NOTIFICATION_WORK_ITEM, List);
|
NewWorkItem = CONTAINING_RECORD(Head, ONLINE_NOTIFICATION_WORK_ITEM, WorkItem.List);
|
||||||
KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
|
KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
|
||||||
NewWorkItem->List.Blink = NULL;
|
NewWorkItem->WorkItem.List.Blink = NULL;
|
||||||
NewWorkItem->List.Flink = NULL;
|
NewWorkItem->WorkItem.List.Flink = NULL;
|
||||||
ExQueueWorkItem((PWORK_QUEUE_ITEM)NewWorkItem, DelayedWorkQueue);
|
ExQueueWorkItem(&NewWorkItem->WorkItem, DelayedWorkQueue);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -155,10 +155,8 @@ PostOnlineNotification(IN PDEVICE_EXTENSION DeviceExtension,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkItem->List.Flink = NULL;
|
ExInitializeWorkItem(&WorkItem->WorkItem, SendOnlineNotificationWorker, WorkItem);
|
||||||
WorkItem->DeviceExtension = DeviceExtension;
|
WorkItem->DeviceExtension = DeviceExtension;
|
||||||
WorkItem->WorkerRoutine = SendOnlineNotificationWorker;
|
|
||||||
WorkItem->Parameter = WorkItem;
|
|
||||||
WorkItem->SymbolicName.Length = SymbolicName->Length;
|
WorkItem->SymbolicName.Length = SymbolicName->Length;
|
||||||
WorkItem->SymbolicName.MaximumLength = SymbolicName->Length + sizeof(WCHAR);
|
WorkItem->SymbolicName.MaximumLength = SymbolicName->Length + sizeof(WCHAR);
|
||||||
WorkItem->SymbolicName.Buffer = AllocatePool(WorkItem->SymbolicName.MaximumLength);
|
WorkItem->SymbolicName.Buffer = AllocatePool(WorkItem->SymbolicName.MaximumLength);
|
||||||
|
@ -179,12 +177,12 @@ PostOnlineNotification(IN PDEVICE_EXTENSION DeviceExtension,
|
||||||
{
|
{
|
||||||
/* Queue that one for execution */
|
/* Queue that one for execution */
|
||||||
DeviceExtension->OnlineNotificationWorkerActive = 1;
|
DeviceExtension->OnlineNotificationWorkerActive = 1;
|
||||||
ExQueueWorkItem((PWORK_QUEUE_ITEM)WorkItem, DelayedWorkQueue);
|
ExQueueWorkItem(&WorkItem->WorkItem, DelayedWorkQueue);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Otherwise, just put it in the queue list */
|
/* Otherwise, just put it in the queue list */
|
||||||
InsertTailList(&(DeviceExtension->OnlineNotificationListHead), &(WorkItem->List));
|
InsertTailList(&(DeviceExtension->OnlineNotificationListHead), &(WorkItem->WorkItem.List));
|
||||||
}
|
}
|
||||||
|
|
||||||
KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
|
KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
|
||||||
|
|
4
reactos/ntoskrnl/cache/cachesub.c
vendored
4
reactos/ntoskrnl/cache/cachesub.c
vendored
|
@ -108,11 +108,11 @@ CcScheduleReadAhead(IN PFILE_OBJECT FileObject,
|
||||||
WorkItem->FileOffset = *FileOffset;
|
WorkItem->FileOffset = *FileOffset;
|
||||||
WorkItem->Length = Length;
|
WorkItem->Length = Length;
|
||||||
|
|
||||||
ExInitializeWorkItem(((PWORK_QUEUE_ITEM)WorkItem),
|
ExInitializeWorkItem(&WorkItem->WorkItem,
|
||||||
(PWORKER_THREAD_ROUTINE)CcpReadAhead,
|
(PWORKER_THREAD_ROUTINE)CcpReadAhead,
|
||||||
WorkItem);
|
WorkItem);
|
||||||
|
|
||||||
ExQueueWorkItem((PWORK_QUEUE_ITEM)WorkItem, DelayedWorkQueue);
|
ExQueueWorkItem(&WorkItem->WorkItem, DelayedWorkQueue);
|
||||||
DPRINT("Done\n");
|
DPRINT("Done\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
reactos/ntoskrnl/cache/pinsup.c
vendored
4
reactos/ntoskrnl/cache/pinsup.c
vendored
|
@ -273,7 +273,7 @@ CcpDereferenceCache(ULONG Start,
|
||||||
WorkItem->ReleaseFromLazyWrite = Bcb->Map->Callbacks.ReleaseFromLazyWrite;
|
WorkItem->ReleaseFromLazyWrite = Bcb->Map->Callbacks.ReleaseFromLazyWrite;
|
||||||
WorkItem->LazyContext = Bcb->Map->LazyContext;
|
WorkItem->LazyContext = Bcb->Map->LazyContext;
|
||||||
|
|
||||||
ExInitializeWorkItem(((PWORK_QUEUE_ITEM)WorkItem),
|
ExInitializeWorkItem(&WorkItem->WorkItem,
|
||||||
(PWORKER_THREAD_ROUTINE)CcpUnmapCache,
|
(PWORKER_THREAD_ROUTINE)CcpUnmapCache,
|
||||||
WorkItem);
|
WorkItem);
|
||||||
|
|
||||||
|
@ -287,7 +287,7 @@ CcpDereferenceCache(ULONG Start,
|
||||||
RemoveEntryList(&Bcb->ThisFileList);
|
RemoveEntryList(&Bcb->ThisFileList);
|
||||||
|
|
||||||
CcpUnlock();
|
CcpUnlock();
|
||||||
ExQueueWorkItem((PWORK_QUEUE_ITEM)WorkItem, DelayedWorkQueue);
|
ExQueueWorkItem(&WorkItem->WorkItem, DelayedWorkQueue);
|
||||||
CcpLock();
|
CcpLock();
|
||||||
}
|
}
|
||||||
DPRINT("Done\n");
|
DPRINT("Done\n");
|
||||||
|
|
Loading…
Reference in a new issue