priority.c

来自「epson 13506 driver code」· C语言 代码 · 共 71 行

C
71
字号
/*
**===========================================================================
** PRIORITY.C - Provide functions for time-critical code
**---------------------------------------------------------------------------
** Copyright (c) 1999, 2001 Epson Research and Development, Inc.
** All Rights Reserved.
**===========================================================================
*/

#ifdef INTEL_W32
#include <windows.h>
#endif

#include "hal.h"

/*-------------------------------------------------------------------------*/

static const char Revision[] = "PRIORITY.C=$Revision: 4 $";

/*-------------------------------------------------------------------------*/

int _ThreadPriorityNestCount = 0;


#ifdef INTEL_W32
static unsigned SavedProcessPriority;
static unsigned SavedThreadPriority;

int seBeginHighPriority(void)
    {
    if (_ThreadPriorityNestCount == 0)
        {
        SavedProcessPriority = GetPriorityClass(GetCurrentProcess());
        SavedThreadPriority  = GetThreadPriority(GetCurrentThread());
        SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
        SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
        }    
    _ThreadPriorityNestCount++;
    return _ThreadPriorityNestCount;
    }

int seEndHighPriority(void)
    {
    if (_ThreadPriorityNestCount == 1)
        {
        SetPriorityClass(GetCurrentProcess(), SavedProcessPriority);
        SetThreadPriority(GetCurrentThread(), SavedThreadPriority);
        }
    if (_ThreadPriorityNestCount > 0)
        _ThreadPriorityNestCount--;
    return _ThreadPriorityNestCount;
    }

#else

int seBeginHighPriority(void)
   {
   _ThreadPriorityNestCount++;
   return _ThreadPriorityNestCount;
   }

int seEndHighPriority(void)
   {
   if (_ThreadPriorityNestCount > 0)
      _ThreadPriorityNestCount--;

   return _ThreadPriorityNestCount;
   }

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?