From 776a2489812fb0c369a10ddac282496055ef8c8f Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Wed, 21 Nov 2007 11:18:15 +0000 Subject: [PATCH] - Remove stupid and greatly broken "let's wait in a loop, while querying current time" by calls to KeDelayExecutionThread(). svn path=/trunk/; revision=30620 --- reactos/drivers/usb/nt4compat/usbdriver/usb.c | 76 +++---------------- 1 file changed, 10 insertions(+), 66 deletions(-) diff --git a/reactos/drivers/usb/nt4compat/usbdriver/usb.c b/reactos/drivers/usb/nt4compat/usbdriver/usb.c index 73859497e65..49dc4700dfa 100644 --- a/reactos/drivers/usb/nt4compat/usbdriver/usb.c +++ b/reactos/drivers/usb/nt4compat/usbdriver/usb.c @@ -1014,80 +1014,24 @@ LBL_OUT: VOID usb_wait_ms_dpc(ULONG ms) { - LARGE_INTEGER start; - LARGE_INTEGER ticker; - LARGE_INTEGER freq; - ULONG interval; - ULONG expire_count; + LARGE_INTEGER Interval; + if (ms <= 0) + return; - KeQueryPerformanceCounter(&freq); - - expire_count = 2000000; - if (cpu_clock_freq) - expire_count = (cpu_clock_freq / 1000) * ms; - - if (usb_query_clicks(&start) == FALSE) - { - ticker.QuadPart = 0; - while (TRUE) - { - KeQuerySystemTime(&ticker); - interval = ticker.LowPart - start.LowPart; - if (interval >= ms * 10000) - break; - } - } - else - { - ticker.QuadPart = 0; - while (TRUE) - { - usb_query_clicks(&ticker); - interval = ticker.LowPart - start.LowPart; - if (interval >= expire_count) - break; - } - } + Interval.QuadPart = -ms * 10000; + KeDelayExecutionThread(KernelMode, FALSE, &Interval); } VOID usb_wait_us_dpc(ULONG us) { - LARGE_INTEGER start; - LARGE_INTEGER ticker; - LARGE_INTEGER freq; - ULONG interval; - ULONG expire_count; + LARGE_INTEGER Interval; + if (us <= 0) + return; - KeQueryPerformanceCounter(&freq); - - expire_count = 2000000; - if (cpu_clock_freq) - expire_count = (cpu_clock_freq / 1000000) * us; - - if (usb_query_clicks(&start) == FALSE) - { - ticker.QuadPart = 0; - while (TRUE) - { - KeQuerySystemTime(&ticker); - interval = ticker.LowPart - start.LowPart; - if (interval >= us * 10) - break; - } - } - else - { - ticker.QuadPart = 0; - while (TRUE) - { - usb_query_clicks(&ticker); - interval = ticker.LowPart - start.LowPart; - if (interval >= expire_count) - break; - } - } + Interval.QuadPart = -us; + KeDelayExecutionThread(KernelMode, FALSE, &Interval); } VOID