Author: janderwald
Date: Mon Jan 23 15:49:43 2012
New Revision: 55110
URL:
http://svn.reactos.org/svn/reactos?rev=55110&view=rev
Log:
[USBEHCI]
- Use the same lock in the IUSBQueue as in the IDMAMemoryManager
- add debug traces (default off)
Modified:
branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp
branches/usb-bringup-trunk/drivers/usb/usbehci_new/hub_controller.cpp
branches/usb-bringup-trunk/drivers/usb/usbehci_new/memory_manager.cpp
branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_device.cpp
branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp
Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/u…
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp [iso-8859-1]
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp [iso-8859-1] Mon Jan
23 15:49:43 2012
@@ -438,7 +438,7 @@
//
// Initialize the UsbQueue now that we have an AdapterObject.
//
- Status = m_UsbQueue->Initialize(PUSBHARDWAREDEVICE(this), m_Adapter,
m_MemoryManager, NULL);
+ Status = m_UsbQueue->Initialize(PUSBHARDWAREDEVICE(this), m_Adapter,
m_MemoryManager, &m_Lock);
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to Initialize the UsbQueue\n");
@@ -934,7 +934,9 @@
//
// acquire lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// return old irql
@@ -947,6 +949,7 @@
CUSBHardwareDevice::ReleaseDeviceLock(
KIRQL OldLevel)
{
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(&m_Lock, OldLevel);
}
Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/hub_controller.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/u…
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/hub_controller.cpp [iso-8859-1]
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/hub_controller.cpp [iso-8859-1] Mon
Jan 23 15:49:43 2012
@@ -1861,7 +1861,9 @@
//
// acquire device lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// find address
@@ -1883,6 +1885,7 @@
//
// release spin lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(&m_Lock, OldLevel);
//
@@ -1900,7 +1903,9 @@
//
// acquire device lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// sanity check
@@ -1920,6 +1925,7 @@
//
// release lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(&m_Lock, OldLevel);
}
//-----------------------------------------------------------------------------------------
@@ -1935,7 +1941,9 @@
//
// acquire lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// point to first entry
@@ -1983,6 +1991,7 @@
//
// release lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(&m_Lock, OldLevel);
//
@@ -2002,7 +2011,9 @@
//
// acquire lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// point to first entry
@@ -2040,6 +2051,7 @@
//
// release lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(&m_Lock, OldLevel);
//
@@ -2077,7 +2089,9 @@
//
// acquire lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// insert entry
@@ -2087,6 +2101,7 @@
//
// release spin lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(&m_Lock, OldLevel);
//
@@ -2106,7 +2121,9 @@
//
// acquire hub controller lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// now set the callback routine and context of the hub
@@ -2114,10 +2131,11 @@
m_HubCallbackContext = CallbackContext;
m_HubCallbackRoutine = CallbackRoutine;
- //
- // release hub controller lock
- //
- KeReleaseSpinLock(&m_Lock, OldLevel);
+ //
+ // release hub controller lock
+ //
+ DPRINT(__FUNCTION__ "release\n");
+ KeReleaseSpinLock(&m_Lock, OldLevel);
}
//=================================================================================================
Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/memory_manager.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/u…
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/memory_manager.cpp [iso-8859-1]
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/memory_manager.cpp [iso-8859-1] Mon
Jan 23 15:49:43 2012
@@ -157,7 +157,9 @@
//
// acquire lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// helper variable
@@ -235,6 +237,7 @@
//
// release lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(m_Lock, OldLevel);
//
@@ -304,7 +307,9 @@
//
// acquire lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// release buffer
@@ -314,6 +319,7 @@
//
// release lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(m_Lock, OldLevel);
//
Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_device.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/u…
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_device.cpp [iso-8859-1]
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_device.cpp [iso-8859-1] Mon Jan
23 15:49:43 2012
@@ -519,7 +519,9 @@
//
// acquire device lock
//
+ DPRINT(__FUNCTION__ " acquire\n");
KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// commit urb
@@ -529,6 +531,7 @@
//
// release lock
//
+ DPRINT(__FUNCTION__ "release\n");
KeReleaseSpinLock(&m_Lock, OldLevel);
return Status;
Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/u…
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp [iso-8859-1]
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp [iso-8859-1] Mon Jan
23 15:49:43 2012
@@ -33,7 +33,7 @@
return m_Ref;
}
- virtual NTSTATUS Initialize(IN PUSBHARDWAREDEVICE Hardware, PDMA_ADAPTER
AdapterObject, IN PDMAMEMORYMANAGER MemManager, IN OPTIONAL PKSPIN_LOCK Lock);
+ virtual NTSTATUS Initialize(IN PUSBHARDWAREDEVICE Hardware, PDMA_ADAPTER
AdapterObject, IN PDMAMEMORYMANAGER MemManager, IN PKSPIN_LOCK Lock);
virtual ULONG GetPendingRequestCount();
virtual NTSTATUS AddUSBRequest(PURB Urb);
virtual NTSTATUS AddUSBRequest(IUSBRequest * Request);
@@ -48,7 +48,7 @@
protected:
LONG m_Ref;
// reference count
- KSPIN_LOCK m_Lock;
// list lock
+ PKSPIN_LOCK m_Lock;
// list lock
PDMA_ADAPTER m_Adapter;
// dma adapter
PUSBHARDWAREDEVICE m_Hardware;
// stores hardware object
PQUEUE_HEAD AsyncListQueueHead;
// async queue head
@@ -114,7 +114,7 @@
//
// initialize device lock
//
- KeInitializeSpinLock(&m_Lock);
+ m_Lock = Lock;
//
// Get the AsyncQueueHead
@@ -355,9 +355,13 @@
//
// Add it to the pending list
//
- KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquire\n");
+ KeAcquireSpinLock(m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
+
LinkQueueHead(AsyncListQueueHead, QueueHead);
- KeReleaseSpinLock(&m_Lock, OldLevel);
+ DPRINT(__FUNCTION__ "release\n");
+ KeReleaseSpinLock(m_Lock, OldLevel);
}
@@ -575,8 +579,6 @@
PQUEUE_HEAD CurrentQH,
NTSTATUS Status)
{
- KIRQL OldLevel;
-
//
// now unlink the queue head
// FIXME: implement chained queue heads
@@ -608,7 +610,9 @@
//
// lock completed async list
//
- KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquire\n");
+ KeAcquireSpinLock(m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// walk async list
@@ -664,7 +668,8 @@
//
// release lock
//
- KeReleaseSpinLock(&m_Lock, OldLevel);
+ DPRINT(__FUNCTION__ "release\n");
+ KeReleaseSpinLock(m_Lock, OldLevel);
}
@@ -767,7 +772,9 @@
//
// first acquire request lock
//
- KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquire\n");
+ KeAcquireSpinLock(m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// add to pending list
@@ -777,7 +784,8 @@
//
// release queue head
//
- KeReleaseSpinLock(&m_Lock, OldLevel);
+ DPRINT(__FUNCTION__ "release\n");
+ KeReleaseSpinLock(m_Lock, OldLevel);
//
// Done for now
@@ -846,7 +854,9 @@
//
// first acquire request lock
//
- KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquire\n");
+ KeAcquireSpinLock(m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
//
// the list should not be empty
@@ -873,7 +883,8 @@
//
// release lock
//
- KeReleaseSpinLock(&m_Lock, OldLevel);
+ DPRINT(__FUNCTION__ "release\n");
+ KeReleaseSpinLock(m_Lock, OldLevel);
//
// complete request now
@@ -883,7 +894,10 @@
//
// first acquire request lock
//
- KeAcquireSpinLock(&m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquire\n");
+ KeAcquireSpinLock(m_Lock, &OldLevel);
+ DPRINT(__FUNCTION__ " acquired\n");
+
}
//
@@ -910,7 +924,8 @@
//
// release lock
//
- KeReleaseSpinLock(&m_Lock, OldLevel);
+ DPRINT(__FUNCTION__ "release\n");
+ KeReleaseSpinLock(m_Lock, OldLevel);
}
NTSTATUS