[*] Remove deprecated #if 0s from AuWakeOnAdress.cpp
This commit is contained in:
parent
0283186046
commit
274a0e1783
@ -9,18 +9,9 @@
|
|||||||
#include "AuWakeOnAddress.hpp"
|
#include "AuWakeOnAddress.hpp"
|
||||||
#include "Primitives/SMTYield.hpp"
|
#include "Primitives/SMTYield.hpp"
|
||||||
|
|
||||||
#if defined(AURORA_PLATFORM_WIN32)
|
|
||||||
#include <timeapi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(AURORA_IS_LINUX_DERIVED)
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Time/Time.hpp>
|
#include <Time/Time.hpp>
|
||||||
|
|
||||||
#define HACK_NO_INVALID_ACCESS_LEAK_SHARED_REF_ON_DESTROYED_THREAD
|
#define HACK_NO_INVALID_ACCESS_LEAK_SHARED_REF_ON_DESTROYED_THREAD
|
||||||
//#define FALLBACK_WAKEONADDRESS_SUPPORTS_NONEXACT_MATCHING
|
|
||||||
|
|
||||||
namespace Aurora::Threading
|
namespace Aurora::Threading
|
||||||
{
|
{
|
||||||
@ -168,18 +159,10 @@ namespace Aurora::Threading
|
|||||||
|
|
||||||
bool WaitEntry::TryWakeNoLockNoReallyNoLock(const void *pAddress)
|
bool WaitEntry::TryWakeNoLockNoReallyNoLock(const void *pAddress)
|
||||||
{
|
{
|
||||||
#if defined(FALLBACK_WAKEONADDRESS_SUPPORTS_NONEXACT_MATCHING)
|
|
||||||
if (AuReinterpretCast<const char *>(this->pAddress) > AuReinterpretCast<const char *>(pAddress) ||
|
|
||||||
AuReinterpretCast<const char *>(this->pAddress) + this->uSize <= AuReinterpretCast<const char *>(pAddress))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (this->pAddress != pAddress)
|
if (this->pAddress != pAddress)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
this->uAtomic = 0;
|
this->uAtomic = 0;
|
||||||
this->variable.Signal();
|
this->variable.Signal();
|
||||||
@ -188,18 +171,10 @@ namespace Aurora::Threading
|
|||||||
|
|
||||||
bool WaitEntry::TryWakeNoLock(const void *pAddress)
|
bool WaitEntry::TryWakeNoLock(const void *pAddress)
|
||||||
{
|
{
|
||||||
#if defined(FALLBACK_WAKEONADDRESS_SUPPORTS_NONEXACT_MATCHING)
|
|
||||||
if (AuReinterpretCast<const char *>(this->pAddress) > AuReinterpretCast<const char *>(pAddress) ||
|
|
||||||
AuReinterpretCast<const char *>(this->pAddress) + this->uSize <= AuReinterpretCast<const char *>(pAddress))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (this->pAddress != pAddress)
|
if (this->pAddress != pAddress)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
AU_LOCK_GUARD(this->mutex);
|
AU_LOCK_GUARD(this->mutex);
|
||||||
this->uAtomic = 0;
|
this->uAtomic = 0;
|
||||||
@ -419,36 +394,21 @@ namespace Aurora::Threading
|
|||||||
this->uAtomic = 0;
|
this->uAtomic = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define AddressToIndex AuHashCode(pAddressIDC) & (AuArraySize(this->list) - 1)
|
#define AddressToIndex AuHashCode(pAddress) & (AuArraySize(this->list) - 1)
|
||||||
|
|
||||||
WaitEntry *ProcessWaitContainer::WaitBufferFrom(const void *pAddress, AuUInt8 uSize)
|
WaitEntry *ProcessWaitContainer::WaitBufferFrom(const void *pAddress, AuUInt8 uSize)
|
||||||
{
|
{
|
||||||
#if defined(FALLBACK_WAKEONADDRESS_SUPPORTS_NONEXACT_MATCHING)
|
|
||||||
auto pAddressIDC = (void *)(AuUInt(pAddress) & ~(8 - 1));
|
|
||||||
#else
|
|
||||||
auto pAddressIDC = pAddress;
|
|
||||||
#endif
|
|
||||||
return this->list[AddressToIndex].WaitBufferFrom(pAddress, uSize);
|
return this->list[AddressToIndex].WaitBufferFrom(pAddress, uSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
bool ProcessWaitContainer::IterateWake(const void *pAddress, T callback)
|
bool ProcessWaitContainer::IterateWake(const void *pAddress, T callback)
|
||||||
{
|
{
|
||||||
#if defined(FALLBACK_WAKEONADDRESS_SUPPORTS_NONEXACT_MATCHING)
|
|
||||||
auto pAddressIDC = (void *)(AuUInt(pAddress) & ~(8 - 1));
|
|
||||||
#else
|
|
||||||
auto pAddressIDC = pAddress;
|
|
||||||
#endif
|
|
||||||
return this->list[AddressToIndex].IterateWake(callback);
|
return this->list[AddressToIndex].IterateWake(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessWaitContainer::RemoveSelf(const void *pAddress, WaitEntry *pSelf)
|
void ProcessWaitContainer::RemoveSelf(const void *pAddress, WaitEntry *pSelf)
|
||||||
{
|
{
|
||||||
#if defined(FALLBACK_WAKEONADDRESS_SUPPORTS_NONEXACT_MATCHING)
|
|
||||||
auto pAddressIDC = (void *)(AuUInt(pAddress) & ~(8 - 1));
|
|
||||||
#else
|
|
||||||
auto pAddressIDC = pAddress;
|
|
||||||
#endif
|
|
||||||
return this->list[AddressToIndex].RemoveSelf(pSelf);
|
return this->list[AddressToIndex].RemoveSelf(pSelf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,9 +77,6 @@ namespace Aurora::Threading
|
|||||||
struct ProcessWaitNodeContainer
|
struct ProcessWaitNodeContainer
|
||||||
{
|
{
|
||||||
AuUInt32 uAtomic {};
|
AuUInt32 uAtomic {};
|
||||||
#if defined(WOA_ENABLE_OLD_SHORT_LIST)
|
|
||||||
WaitEntry entries[kDefaultWaitPerProcess];
|
|
||||||
#endif
|
|
||||||
ProcessListWait waitList;
|
ProcessListWait waitList;
|
||||||
|
|
||||||
WaitEntry *WaitBufferFrom(const void *pAddress, AuUInt8 uSize);
|
WaitEntry *WaitBufferFrom(const void *pAddress, AuUInt8 uSize);
|
||||||
|
Loading…
Reference in New Issue
Block a user