90 lines
2.6 KiB
C
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
|