#define MAX_HIGH_INDEX (MID_LEVEL_ENTRIES * MID_LEVEL_ENTRIES * LOW_LEVEL_ENTRIES)
//
-// Detect GCC
+// Detect old GCC
//
-#ifdef __GNUC__
+#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ < 40300)
#define DEFINE_WAIT_BLOCK(x) \
struct _AlignHack \
NTAPI
ExSystemExceptionFilter(VOID);
-static __inline _SEH_FILTER(_SEH_ExSystemExceptionFilter)
-{
- return ExSystemExceptionFilter();
-}
-
/* CALLBACKS *****************************************************************/
-VOID
FORCEINLINE
+VOID
ExDoCallBack(IN OUT PEX_CALLBACK Callback,
IN PVOID Context,
IN PVOID Argument1,
#define ExpChangePushlock(lock, new, old) InterlockedCompareExchangePointer((PVOID*)lock, (PVOID)new, (PVOID)old)
#define ExpSetRundown(x, y) InterlockedExchange64((PLONGLONG)x, y)
#else
-#define ExpChangeRundown(x, y, z) InterlockedCompareExchange((PLONG)x, PtrToLong(y), PtrToLong(z))
+#define ExpChangeRundown(x, y, z) PtrToUlong(InterlockedCompareExchange((PLONG)x, PtrToLong(y), PtrToLong(z)))
#define ExpChangePushlock(x, y, z) LongToPtr(InterlockedCompareExchange((PLONG)x, PtrToLong(y), PtrToLong(z)))
#define ExpSetRundown(x, y) InterlockedExchange((PLONG)x, y)
#endif
* function.
*
*--*/
-BOOLEAN
FORCEINLINE
+BOOLEAN
_ExAcquireRundownProtection(IN PEX_RUNDOWN_REF RunRef)
{
ULONG_PTR Value, NewValue;
* function.
*
*--*/
-VOID
FORCEINLINE
+VOID
_ExReleaseRundownProtection(IN PEX_RUNDOWN_REF RunRef)
{
ULONG_PTR Value, NewValue;
* @remarks This is the internal macro for system use only.
*
*--*/
-VOID
FORCEINLINE
+VOID
_ExInitializeRundownProtection(IN PEX_RUNDOWN_REF RunRef)
{
/* Set the count to zero */
* necessary, then the slow path is taken through the exported function.
*
*--*/
-VOID
FORCEINLINE
+VOID
_ExWaitForRundownProtectionRelease(IN PEX_RUNDOWN_REF RunRef)
{
ULONG_PTR Value;
* @remarks This is the internal macro for system use only.
*
*--*/
-VOID
FORCEINLINE
+VOID
_ExRundownCompleted(IN PEX_RUNDOWN_REF RunRef)
{
/* Sanity check */
* @remarks None.
*
*--*/
-VOID
FORCEINLINE
+VOID
ExInitializePushLock(IN PULONG_PTR PushLock)
{
/* Set the value to 0 */
* This macro should usually be paired up with KeAcquireCriticalRegion.
*
*--*/
-VOID
FORCEINLINE
+VOID
ExAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
{
/* Try acquiring the lock */
* This macro should usually be paired up with KeAcquireCriticalRegion.
*
*--*/
-BOOLEAN
FORCEINLINE
+BOOLEAN
ExTryToAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
{
/* Try acquiring the lock */
* This macro should usually be paired up with KeAcquireCriticalRegion.
*
*--*/
-VOID
FORCEINLINE
+VOID
ExAcquirePushLockShared(PEX_PUSH_LOCK PushLock)
{
EX_PUSH_LOCK NewValue;
* to simply set the lock bit and remove any other bits.
*
*--*/
-BOOLEAN
FORCEINLINE
+BOOLEAN
ExConvertPushLockSharedToExclusive(IN PEX_PUSH_LOCK PushLock)
{
EX_PUSH_LOCK OldValue;
* Callers of ExWaitOnPushLock must be running at IRQL <= APC_LEVEL.
*
*--*/
-VOID
FORCEINLINE
+VOID
ExWaitOnPushLock(PEX_PUSH_LOCK PushLock)
{
/* Check if we're locked */
* This macro should usually be paired up with KeLeaveCriticalRegion.
*
*--*/
-VOID
FORCEINLINE
+VOID
ExReleasePushLockShared(PEX_PUSH_LOCK PushLock)
{
EX_PUSH_LOCK OldValue;
* This macro should usually be paired up with KeLeaveCriticalRegion.
*
*--*/
-VOID
FORCEINLINE
+VOID
ExReleasePushLockExclusive(PEX_PUSH_LOCK PushLock)
{
EX_PUSH_LOCK OldValue;
* This macro should usually be paired up with KeLeaveCriticalRegion.
*
*--*/
-VOID
FORCEINLINE
+VOID
ExReleasePushLock(PEX_PUSH_LOCK PushLock)
{
EX_PUSH_LOCK OldValue = *PushLock;