drvsleep.c
上传用户:qiulin1960
上传日期:2013-10-16
资源大小:2844k
文件大小:2k
源码类别:

Windows CE

开发平台:

Windows_Unix

  1. /*++
  2. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. PARTICULAR PURPOSE.
  6. Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.
  7. Module Name:  
  8.   drvsleep.c
  9. Abstract:  
  10.   This module contains the implementation of DriverSleep(), which
  11.   is used when delays are needed within power handling routines, where
  12.   no system calls are allowed.  The SH3 implementation polls the free
  13.   running timer to implement a delay.
  14.   
  15. Functions:
  16.   DriverSleep
  17.   
  18. Notes:
  19. Revision History:
  20.   Glenn Davis 4/1/97
  21. --*/
  22. #include <windows.h>
  23. #include <p2.h>
  24. #include <p2debug.h>
  25. /*  DriverSleep
  26.  *
  27.  *  implement a busy-wait delay, for use by drivers
  28.  *  during power handler functions.
  29.  * 
  30.  *  The following assumptions are made when calling from a power
  31.  *  handler routine:
  32.  *     -- Processor is in kernel mode (so we can access mem directly)
  33.  *     -- We're non preemptible.  Otherwise, we'll get swapped out and
  34.  *        delay could be longer than specified.
  35.  */
  36. void
  37. DriverSleep(DWORD dwMS, BOOL bInPowerHandler)
  38. {
  39.     /*
  40.      * If we're not in a power handler, use Sleep to block our
  41.      * thread and let others run.  Note that Sleep() currently
  42.      * is not very accurate for low values - the minimum sleep
  43.      * interval is at least one system tick (25 ms).
  44.      */
  45.     if (!bInPowerHandler) {
  46.         Sleep(dwMS);
  47.         return;
  48.      }
  49. }