71 lines
1.5 KiB
C
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
|