2025-04-27 07:49:33 -04:00

105 lines
1.5 KiB
C++

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
kernel32.cxx
Abstract:
Windows 95 stub for kernel32 functions
Author:
Johnson Apacible (johnsona) 13-Nov-1996
--*/
#include "lonsiw95.hxx"
#pragma hdrstop
PVOID
WINAPI
FakeInterlockedCompareExchange (
PVOID *Destination,
PVOID Exchange,
PVOID Comperand
)
{
PVOID oldValue;
ACQUIRE_LOCK( &LonsiLock );
oldValue = *Destination;
if ( (ULONG_PTR)oldValue == (ULONG_PTR)Comperand ) {
*Destination = Exchange;
}
RELEASE_LOCK( &LonsiLock );
return(oldValue);
} // InterlockedCompareExchange
LONG
WINAPI
FakeInterlockedExchangeAdd(
LPLONG Addend,
LONG Value
)
{
LONG oldValue;
ACQUIRE_LOCK( &LonsiLock );
oldValue = *Addend;
*Addend = Value + oldValue;
RELEASE_LOCK( &LonsiLock );
return(oldValue);
} // InterlockedExchangeAdd
LONG
WINAPI
FakeInterlockedIncrement(
LPLONG Addend
)
{
LONG newValue;
ACQUIRE_LOCK( &LonsiLock );
*Addend += 1;
newValue = *Addend;
RELEASE_LOCK( &LonsiLock );
return(newValue);
} // InterlockedIncrement
LONG
WINAPI
FakeInterlockedDecrement(
LPLONG Addend
)
{
LONG newValue;
ACQUIRE_LOCK( &LonsiLock );
*Addend -= 1;
newValue = *Addend;
RELEASE_LOCK( &LonsiLock );
return(newValue);
} // InterlockedDecrement