[ros-diffs] [janderwald] 40360: - Re-use WorkItem - Fixes leaking a workitem for each pin creation request
janderwald at svn.reactos.org
janderwald at svn.reactos.org
Sat Apr 4 18:04:26 CEST 2009
Author: janderwald
Date: Sat Apr 4 20:04:25 2009
New Revision: 40360
URL: http://svn.reactos.org/svn/reactos?rev=40360&view=rev
Log:
- Re-use WorkItem
- Fixes leaking a workitem for each pin creation request
Modified:
trunk/reactos/drivers/wdm/audio/backpln/portcls/adapter.c
trunk/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c
trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h
Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/adapter.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/adapter.c?rev=40360&r1=40359&r2=40360&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/adapter.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/adapter.c [iso-8859-1] Sat Apr 4 20:04:25 2009
@@ -10,9 +10,6 @@
*/
#include "private.h"
-#include <devguid.h>
-#include <initguid.h>
-#include <ksmedia.h>
/*
This is called from DriverEntry so that PortCls can take care of some
@@ -152,6 +149,9 @@
/* clear initializing flag */
fdo->Flags &= ~ DO_DEVICE_INITIALIZING;
+ /* allocate work item */
+ portcls_ext->WorkItem = IoAllocateWorkItem(fdo);
+
/* allocate the device header */
status = KsAllocateDeviceHeader(&portcls_ext->KsDeviceHeader, MaxObjects, portcls_ext->CreateItems);
/* did we succeed */
Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c?rev=40360&r1=40359&r2=40360&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c [iso-8859-1] Sat Apr 4 20:04:25 2009
@@ -500,7 +500,6 @@
IIrpTarget *Filter;
PKSOBJECT_CREATE_ITEM CreateItem;
PPIN_WORKER_CONTEXT Context;
- PIO_WORKITEM WorkItem;
DPRINT("PcCreateItemDispatch called DeviceObject %p\n", DeviceObject);
@@ -599,20 +598,11 @@
Context->Filter = Filter;
Context->Irp = Irp;
- WorkItem = IoAllocateWorkItem(DeviceObject);
- if (!WorkItem)
- {
- Irp->IoStatus.Information = 0;
- Irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES;
- FreeItem(Context, TAG_PORTCLASS);
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
- return STATUS_INSUFFICIENT_RESOURCES;
- }
DPRINT("Queueing IRP %p Irql %u\n", Irp, KeGetCurrentIrql());
Irp->IoStatus.Information = 0;
Irp->IoStatus.Status = STATUS_PENDING;
IoMarkIrpPending(Irp);
- IoQueueWorkItem(WorkItem, CreatePinWorkerRoutine, DelayedWorkQueue, (PVOID)Context);
+ IoQueueWorkItem(DeviceExt->WorkItem, CreatePinWorkerRoutine, DelayedWorkQueue, (PVOID)Context);
return STATUS_PENDING;
}
Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h?rev=40360&r1=40359&r2=40360&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h [iso-8859-1] Sat Apr 4 20:04:25 2009
@@ -156,7 +156,7 @@
ULONG MaxSubDevices;
KSOBJECT_CREATE_ITEM * CreateItems;
-
+ PIO_WORKITEM WorkItem;
IResourceList* resources;
LIST_ENTRY SubDeviceList;
LIST_ENTRY PhysicalConnectionList;
More information about the Ros-diffs
mailing list