windows-nt/Source/XPSP1/NT/base/mvdm/meinc/syslevel.h
2020-09-26 16:20:57 +08:00

90 lines
2.6 KiB
C

//**********************************************************************
//
// SYSLEVEL.H - System Synchronization Support Include File
//
//**********************************************************************
// Author: Michael Toutonghi
//
// Copyright: 1993 Microsoft
//
// Description:
//
// This file provides the interface to the heirarchical critical
// section support for system synchronization. For further information
// see the associated .C file. This include file works both for 16 bit
// and 32 bit code.
//
// Revision History:
// 2/2/92: created (miketout)
//**********************************************************************
// if this is defined, we will do system heirarchical level checking
#ifdef DEBUG
#define SYSLEVELCHECK
#endif
// These are the currently supported critical section levels
#define SL_LOAD 0
#define SL_WIN16 1
#define SL_KRN32 2
#define SL_PRIVATE 3
#define SL_TOTAL 4
typedef DWORD SYSLVL;
// This is another duplicate definition of the LCRST structure. It must be
// kept in sync with the definitions in core\inc\syslvl16.*,
// core\inc\object16.*, and core\win32\inc\object.*.
// It exists so that modules other than krnl386 and kernel32 do not have to
// include all of the various private kernel header files.
#ifndef LCRST_DEFINED
typedef struct _lcrst {
long crst[5];
#ifdef SYSLEVELCHECK
SYSLVL slLevel;
#endif
} LCRST;
typedef LCRST *LPLCRST;
#endif
#ifndef WOW32_EXTENSIONS
#ifndef SYSLEVELCHECK
#define CheckSysLevel( plcCrst )
#else
void __stdcall _CheckSysLevel( struct _lcrst *plcCrst );
#define CheckSysLevel( plcCrst ) _CheckSysLevel( plcCrst )
#endif
#ifndef SYSLEVELCHECK
#define ConfirmSysLevel( plcCrst )
#else
void __stdcall _ConfirmSysLevel( struct _lcrst *plcCrst );
#define ConfirmSysLevel( plcCrst ) _ConfirmSysLevel( plcCrst )
#endif
#ifndef SYSLEVELCHECK
#define CheckNotSysLevel( plcCrst )
#else
void __stdcall _CheckNotSysLevel( struct _lcrst *plcCrst );
#define CheckNotSysLevel( plcCrst ) _CheckNotSysLevel( plcCrst )
#endif
void __stdcall _InitSysLevel( struct _lcrst *plcCrst, SYSLVL slLevel );
#define InitSysLevel( plcCrst, slLevel ) _InitSysLevel( plcCrst, slLevel )
void __stdcall _EnterSysLevel( struct _lcrst *plcCrst );
#define EnterSysLevel( plcCrst ) _EnterSysLevel( plcCrst )
void __stdcall _LeaveSysLevel( struct _lcrst *plcCrst );
#define LeaveSysLevel( plcCrst ) _LeaveSysLevel( plcCrst )
void KERNENTRY _EnterMustComplete( void );
#define EnterMustComplete() _EnterMustComplete()
void KERNENTRY _LeaveMustComplete( void );
#define LeaveMustComplete() _LeaveMustComplete()
#endif // ndef WOW32_EXTENSIONS