Switching audio system to platform-agnostic primitives.
This commit is contained in:
@@ -17,9 +17,9 @@ namespace xe {
|
||||
namespace kernel {
|
||||
|
||||
typedef struct {
|
||||
xe::be<DWORD> count;
|
||||
xe::be<DWORD> state[5];
|
||||
xe::be<BYTE> buffer[64];
|
||||
xe::be<uint32_t> count;
|
||||
xe::be<uint32_t> state[5];
|
||||
uint8_t buffer[64];
|
||||
} XECRYPT_SHA_STATE;
|
||||
|
||||
void XeCryptShaInit(pointer_t<XECRYPT_SHA_STATE> sha_state) {
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "xenia/base/debugging.h"
|
||||
#include "xenia/base/logging.h"
|
||||
#include "xenia/kernel/kernel_state.h"
|
||||
#include "xenia/kernel/objects/xthread.h"
|
||||
@@ -17,7 +18,7 @@
|
||||
namespace xe {
|
||||
namespace kernel {
|
||||
|
||||
void DbgBreakPoint() { DebugBreak(); }
|
||||
void DbgBreakPoint() { xe::debugging::Break(); }
|
||||
DECLARE_XBOXKRNL_EXPORT(DbgBreakPoint, ExportTag::kImportant);
|
||||
|
||||
// https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
|
||||
@@ -79,13 +80,13 @@ void RtlRaiseException(pointer_t<X_EXCEPTION_RECORD> record) {
|
||||
if (record->exception_code == 0xE06D7363) {
|
||||
// C++ exception.
|
||||
// http://blogs.msdn.com/b/oldnewthing/archive/2010/07/30/10044061.aspx
|
||||
DebugBreak();
|
||||
xe::debugging::Break();
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO(benvanik): unwinding.
|
||||
// This is going to suck.
|
||||
DebugBreak();
|
||||
xe::debugging::Break();
|
||||
}
|
||||
DECLARE_XBOXKRNL_EXPORT(RtlRaiseException, ExportTag::kImportant);
|
||||
|
||||
@@ -94,7 +95,7 @@ void KeBugCheckEx(dword_t code, dword_t param1, dword_t param2, dword_t param3,
|
||||
XELOGD("*** STOP: 0x%.8X (0x%.8X, 0x%.8X, 0x%.8X, 0x%.8X)", code, param1,
|
||||
param2, param3, param4);
|
||||
fflush(stdout);
|
||||
DebugBreak();
|
||||
xe::debugging::Break();
|
||||
assert_always();
|
||||
}
|
||||
DECLARE_XBOXKRNL_EXPORT(KeBugCheckEx, ExportTag::kImportant);
|
||||
|
||||
@@ -128,7 +128,8 @@ X_STATUS XObject::Wait(uint32_t wait_reason, uint32_t processor_mode,
|
||||
TimeoutTicksToMs(*opt_timeout)))
|
||||
: std::chrono::milliseconds::max();
|
||||
|
||||
auto result = wait_handle->Wait(alertable ? true : false, timeout_ms);
|
||||
auto result =
|
||||
xe::threading::Wait(wait_handle, alertable ? true : false, timeout_ms);
|
||||
switch (result) {
|
||||
case xe::threading::WaitResult::kSuccess:
|
||||
return X_STATUS_SUCCESS;
|
||||
@@ -136,7 +137,7 @@ X_STATUS XObject::Wait(uint32_t wait_reason, uint32_t processor_mode,
|
||||
// Or X_STATUS_ALERTED?
|
||||
return X_STATUS_USER_APC;
|
||||
case xe::threading::WaitResult::kTimeout:
|
||||
YieldProcessor();
|
||||
xe::threading::MaybeYield();
|
||||
return X_STATUS_TIMEOUT;
|
||||
default:
|
||||
case xe::threading::WaitResult::kAbandoned:
|
||||
@@ -153,7 +154,7 @@ X_STATUS XObject::SignalAndWait(XObject* signal_object, XObject* wait_object,
|
||||
TimeoutTicksToMs(*opt_timeout)))
|
||||
: std::chrono::milliseconds::max();
|
||||
|
||||
auto result = xe::threading::WaitHandle::SignalAndWait(
|
||||
auto result = xe::threading::SignalAndWait(
|
||||
signal_object->GetWaitHandle(), wait_object->GetWaitHandle(),
|
||||
alertable ? true : false, timeout_ms);
|
||||
switch (result) {
|
||||
@@ -163,7 +164,7 @@ X_STATUS XObject::SignalAndWait(XObject* signal_object, XObject* wait_object,
|
||||
// Or X_STATUS_ALERTED?
|
||||
return X_STATUS_USER_APC;
|
||||
case xe::threading::WaitResult::kTimeout:
|
||||
YieldProcessor();
|
||||
xe::threading::MaybeYield();
|
||||
return X_STATUS_TIMEOUT;
|
||||
default:
|
||||
case xe::threading::WaitResult::kAbandoned:
|
||||
@@ -188,8 +189,8 @@ X_STATUS XObject::WaitMultiple(uint32_t count, XObject** objects,
|
||||
: std::chrono::milliseconds::max();
|
||||
|
||||
if (wait_type) {
|
||||
auto result = xe::threading::WaitHandle::WaitAny(
|
||||
std::move(wait_handles), alertable ? true : false, timeout_ms);
|
||||
auto result = xe::threading::WaitAny(std::move(wait_handles),
|
||||
alertable ? true : false, timeout_ms);
|
||||
switch (result.first) {
|
||||
case xe::threading::WaitResult::kSuccess:
|
||||
return X_STATUS(result.second);
|
||||
@@ -197,7 +198,7 @@ X_STATUS XObject::WaitMultiple(uint32_t count, XObject** objects,
|
||||
// Or X_STATUS_ALERTED?
|
||||
return X_STATUS_USER_APC;
|
||||
case xe::threading::WaitResult::kTimeout:
|
||||
YieldProcessor();
|
||||
xe::threading::MaybeYield();
|
||||
return X_STATUS_TIMEOUT;
|
||||
default:
|
||||
case xe::threading::WaitResult::kAbandoned:
|
||||
@@ -206,8 +207,8 @@ X_STATUS XObject::WaitMultiple(uint32_t count, XObject** objects,
|
||||
return X_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
} else {
|
||||
auto result = xe::threading::WaitHandle::WaitAll(
|
||||
std::move(wait_handles), alertable ? true : false, timeout_ms);
|
||||
auto result = xe::threading::WaitAll(std::move(wait_handles),
|
||||
alertable ? true : false, timeout_ms);
|
||||
switch (result) {
|
||||
case xe::threading::WaitResult::kSuccess:
|
||||
return X_STATUS_SUCCESS;
|
||||
@@ -215,7 +216,7 @@ X_STATUS XObject::WaitMultiple(uint32_t count, XObject** objects,
|
||||
// Or X_STATUS_ALERTED?
|
||||
return X_STATUS_USER_APC;
|
||||
case xe::threading::WaitResult::kTimeout:
|
||||
YieldProcessor();
|
||||
xe::threading::MaybeYield();
|
||||
return X_STATUS_TIMEOUT;
|
||||
default:
|
||||
case xe::threading::WaitResult::kAbandoned:
|
||||
|
||||
Reference in New Issue
Block a user