mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-01-21 16:10:47 +01:00
rx/SharedMutex: replace std::abort with rx::die
Some checks are pending
Formatting check / formatting-check (push) Waiting to run
Build RPCSX / build-linux (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.1-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.2-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.4-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.5-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv9-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv9.1-a) (push) Waiting to run
Build RPCSX / build-android (x86_64, x86-64) (push) Waiting to run
Some checks are pending
Formatting check / formatting-check (push) Waiting to run
Build RPCSX / build-linux (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.1-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.2-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.4-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv8.5-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv9-a) (push) Waiting to run
Build RPCSX / build-android (arm64-v8a, armv9.1-a) (push) Waiting to run
Build RPCSX / build-android (x86_64, x86-64) (push) Waiting to run
This commit is contained in:
parent
a130642ddf
commit
e661de9ad7
|
|
@ -1,10 +1,11 @@
|
|||
#include "SharedMutex.hpp"
|
||||
#include "asm.hpp"
|
||||
#include "die.hpp"
|
||||
|
||||
namespace rx {
|
||||
void shared_mutex::impl_lock_shared(unsigned val) {
|
||||
if (val >= c_err)
|
||||
std::abort(); // "shared_mutex underflow"
|
||||
rx::die("shared_mutex underflow");
|
||||
|
||||
// Try to steal the notification bit
|
||||
unsigned _old = val;
|
||||
|
|
@ -35,7 +36,7 @@ void shared_mutex::impl_lock_shared(unsigned val) {
|
|||
}
|
||||
|
||||
if ((old % c_sig) + c_one >= c_sig)
|
||||
std::abort(); // "shared_mutex overflow"
|
||||
rx::die("shared_mutex overflow");
|
||||
|
||||
while (impl_wait() != std::errc{}) {
|
||||
}
|
||||
|
|
@ -43,7 +44,7 @@ void shared_mutex::impl_lock_shared(unsigned val) {
|
|||
}
|
||||
void shared_mutex::impl_unlock_shared(unsigned old) {
|
||||
if (old - 1 >= c_err)
|
||||
std::abort(); // "shared_mutex underflow"
|
||||
rx::die("shared_mutex underflow");
|
||||
|
||||
// Check reader count, notify the writer if necessary
|
||||
if ((old - 1) % c_one == 0) {
|
||||
|
|
@ -79,7 +80,7 @@ void shared_mutex::impl_signal() {
|
|||
}
|
||||
void shared_mutex::impl_lock(unsigned val) {
|
||||
if (val >= c_err)
|
||||
std::abort(); // "shared_mutex underflow"
|
||||
rx::die("shared_mutex underflow");
|
||||
|
||||
// Try to steal the notification bit
|
||||
unsigned _old = val;
|
||||
|
|
@ -110,13 +111,14 @@ void shared_mutex::impl_lock(unsigned val) {
|
|||
}
|
||||
|
||||
if ((old % c_sig) + c_one >= c_sig)
|
||||
std::abort(); // "shared_mutex overflow"
|
||||
rx::die("shared_mutex overflow");
|
||||
|
||||
while (impl_wait() != std::errc{}) {
|
||||
}
|
||||
}
|
||||
void shared_mutex::impl_unlock(unsigned old) {
|
||||
if (old - c_one >= c_err)
|
||||
std::abort(); // "shared_mutex underflow"
|
||||
rx::die("shared_mutex underflow");
|
||||
|
||||
// 1) Notify the next writer if necessary
|
||||
// 2) Notify all readers otherwise if necessary (currently indistinguishable
|
||||
|
|
@ -138,7 +140,7 @@ void shared_mutex::impl_lock_upgrade() {
|
|||
const unsigned old = m_value.fetch_add(c_one - 1);
|
||||
|
||||
if ((old % c_sig) + c_one - 1 >= c_sig)
|
||||
std::abort(); // "shared_mutex overflow"
|
||||
rx::die("shared_mutex overflow");
|
||||
|
||||
if (old % c_one == 1) {
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in a new issue