windows-nt/Source/XPSP1/NT/base/wow64/mscpu/inc/cpumain.h
2020-09-26 16:20:57 +08:00

71 lines
1.5 KiB
C

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
cpumain.h
Abstract:
Prototypes from cpumain.c
Author:
01-Aug-1995 Ori Gershony (t-orig)
Revision History:
29-Jan-2000 SamerA Added CpupDoInterrupt and CpupRaiseException
--*/
#ifndef CPUMAIN_H
#define CPUMAIN_H
//
// Indicator that threads must check CpuNotify. 0 if threads don't need
// to check, nonzero if they do.
//
extern DWORD ProcessCpuNotify;
//
// Simulates an x86 software interrupt
//
NTSTATUS
CpupDoInterrupt(
IN DWORD InterruptNumber);
//
// Raises a software exception
//
NTSTATUS
CpupRaiseException(
IN PEXCEPTION_RECORD ExceptionRecord);
//
// Raises an exception from the cpu
//
VOID
CpuRaiseStatus(
NTSTATUS Status
);
//
// The following two variables are used to synchronize intel instructions
// with the LOCK prefix. The critical section is a lot faster, but it does
// not guarantee synchronization in shared memory. Eventually we should use
// the critical section by default, and the mutex for certain applications which
// need it (maybe get a list from the registry).
//
extern HANDLE Wx86LockSynchMutexHandle;
extern CRITICAL_SECTION Wx86LockSynchCriticalSection;
//
// The following variable decided which synchronization object is used
//
typedef enum {USECRITICALSECTION, USEMUTEX} SYNCHOBJECTTYPE;
extern SYNCHOBJECTTYPE SynchObjectType;
#endif // CPUMAIN_H