add basic tests for os::Event/SystemEvent functionality

This commit is contained in:
Michael Scire 2022-03-06 14:13:10 -08:00
parent d7a9c7ec4c
commit 5131256383
8 changed files with 29 additions and 9 deletions

View File

@ -146,6 +146,10 @@ hos_stratosphere_api.o: CXXFLAGS += -fno-lto
init_operator_new.o: CXXFLAGS += -fno-lto
init_libnx_shim.os.horizon.o: CXXFLAGS += -fno-lto
ifeq ($(ATMOSPHERE_OS_NAME),windows)
os_%.o: CXXFLAGS += -fno-lto
endif
#---------------------------------------------------------------------------------
%_bin.h %.bin.o : %.bin
#---------------------------------------------------------------------------------

View File

@ -543,7 +543,7 @@ namespace ams::fs::impl {
bool IsEnabledFileSystemAccessorAccessLog(const char *mount_name) {
/* Get the accessor. */
impl::FileSystemAccessor *accessor;
impl::FileSystemAccessor *accessor = nullptr;
if (R_FAILED(impl::Find(std::addressof(accessor), mount_name))) {
return true;
}
@ -553,7 +553,7 @@ namespace ams::fs::impl {
void EnableFileSystemAccessorAccessLog(const char *mount_name) {
/* Get the accessor. */
impl::FileSystemAccessor *accessor;
impl::FileSystemAccessor *accessor = nullptr;
AMS_FS_R_ABORT_UNLESS(impl::Find(std::addressof(accessor), mount_name));
accessor->SetAccessLogEnabled(true);
}

View File

@ -41,8 +41,11 @@ namespace ams::os::impl {
res = ::ppoll(std::addressof(pfd), 1, ns >= 0 ? std::addressof(ts) : nullptr, nullptr);
} while (res < 0 && errno == EINTR);
AMS_ASSERT(res == 0);
return pfd.revents & POLLIN;
AMS_ASSERT(res == 0 || res == 1);
const bool signaled = pfd.revents & POLLIN;
AMS_ASSERT(signaled == (res == 1));
return signaled;
}
}

View File

@ -48,8 +48,11 @@ namespace ams::os::impl {
res = ::poll(std::addressof(pfd), 1, timeout);
} while (res < 0 && errno == EINTR);
AMS_ASSERT(res == 0);
return pfd.revents & POLLIN;
AMS_ASSERT(res == 0 || res == 1);
const bool signaled = pfd.revents & POLLIN;
AMS_ASSERT(signaled == (res == 1));
return signaled;
}
}

View File

@ -62,7 +62,7 @@ namespace ams::os::impl {
const auto res = pthread_cond_timedwait(std::addressof(m_pthread_cond), std::addressof(cs->Get()->m_pthread_mutex), std::addressof(ts));
if (res != 0) {
AMS_ABORT_UNLESS(errno == ETIMEDOUT);
AMS_ABORT_UNLESS(res == ETIMEDOUT);
return ConditionVariableStatus::TimedOut;
}

View File

@ -93,4 +93,9 @@ namespace ams::os::impl {
}
}
Result MultiWaitLinuxImpl::ReplyAndReceiveImpl(s32 *out_index, s32 num, NativeHandle arr[], s32 array_size, s64 ns, NativeHandle reply_target) {
AMS_UNUSED(out_index, num, arr, array_size, ns, reply_target);
R_ABORT_UNLESS(os::ResultNotImplemented());
}
}

View File

@ -97,4 +97,9 @@ namespace ams::os::impl {
}
}
Result MultiWaitMacosImpl::ReplyAndReceiveImpl(s32 *out_index, s32 num, NativeHandle arr[], s32 array_size, s64 ns, NativeHandle reply_target) {
AMS_UNUSED(out_index, num, arr, array_size, ns, reply_target);
R_ABORT_UNLESS(os::ResultNotImplemented());
}
}

View File

@ -50,7 +50,7 @@ namespace ams::os::impl {
ALWAYS_INLINE Tick GetTick() const {
LARGE_INTEGER freq;
::QueryPerformanceFrequency(std::addressof(freq));
::QueryPerformanceCounter(std::addressof(freq));
return Tick(static_cast<s64>(freq.QuadPart));
}
@ -58,7 +58,7 @@ namespace ams::os::impl {
LARGE_INTEGER freq;
PerformOrderingForGetSystemTickOrdered();
::QueryPerformanceFrequency(std::addressof(freq));
::QueryPerformanceCounter(std::addressof(freq));
PerformOrderingForGetSystemTickOrdered();
return Tick(static_cast<s64>(freq.QuadPart));