Cleanup semaphore<> (sema.h) and mutex.h (shared_mutex)

Remove semaphore_lock and writer_lock classes, replace with std::lock_guard
Change semaphore<> interface to Lockable (+ exotic try_unlock method)
This commit is contained in:
Nekotekina 2018-09-03 22:28:33 +03:00
parent 5e556a87ff
commit ca5158a03e
50 changed files with 283 additions and 382 deletions

View file

@ -31,7 +31,7 @@ std::shared_ptr<lv2_event_queue> lv2_event_queue::find(u64 ipc_key)
bool lv2_event_queue::send(lv2_event event)
{
semaphore_lock lock(mutex);
std::lock_guard lock(mutex);
if (sq.empty())
{
@ -147,7 +147,7 @@ error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode)
const auto queue = idm::withdraw<lv2_obj, lv2_event_queue>(equeue_id, [&](lv2_event_queue& queue) -> CellError
{
semaphore_lock lock(queue.mutex);
std::lock_guard lock(queue.mutex);
if (!mode && !queue.sq.empty())
{
@ -169,7 +169,7 @@ error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode)
if (mode == SYS_EVENT_QUEUE_DESTROY_FORCE)
{
semaphore_lock lock(queue->mutex);
std::lock_guard lock(queue->mutex);
for (auto cpu : queue->sq)
{
@ -206,7 +206,7 @@ error_code sys_event_queue_tryreceive(u32 equeue_id, vm::ptr<sys_event_t> event_
return CELL_EINVAL;
}
semaphore_lock lock(queue->mutex);
std::lock_guard lock(queue->mutex);
s32 count = 0;
@ -237,7 +237,7 @@ error_code sys_event_queue_receive(ppu_thread& ppu, u32 equeue_id, vm::ptr<sys_e
return CELL_EINVAL;
}
semaphore_lock lock(queue.mutex);
std::lock_guard lock(queue.mutex);
if (queue.events.empty())
{
@ -277,7 +277,7 @@ error_code sys_event_queue_receive(ppu_thread& ppu, u32 equeue_id, vm::ptr<sys_e
if (passed >= timeout)
{
semaphore_lock lock(queue->mutex);
std::lock_guard lock(queue->mutex);
if (!queue->unqueue(queue->sq, &ppu))
{
@ -306,7 +306,7 @@ error_code sys_event_queue_drain(u32 equeue_id)
const auto queue = idm::check<lv2_obj, lv2_event_queue>(equeue_id, [&](lv2_event_queue& queue)
{
semaphore_lock lock(queue.mutex);
std::lock_guard lock(queue.mutex);
queue.events.clear();
});
@ -369,7 +369,7 @@ error_code sys_event_port_connect_local(u32 eport_id, u32 equeue_id)
{
sys_event.warning("sys_event_port_connect_local(eport_id=0x%x, equeue_id=0x%x)", eport_id, equeue_id);
writer_lock lock(id_manager::g_mutex);
std::lock_guard lock(id_manager::g_mutex);
const auto port = idm::check_unlocked<lv2_obj, lv2_event_port>(eport_id);
@ -399,7 +399,7 @@ error_code sys_event_port_connect_ipc(u32 eport_id, u64 ipc_key)
auto queue = lv2_event_queue::find(ipc_key);
writer_lock lock(id_manager::g_mutex);
std::lock_guard lock(id_manager::g_mutex);
const auto port = idm::check_unlocked<lv2_obj, lv2_event_port>(eport_id);
@ -427,7 +427,7 @@ error_code sys_event_port_disconnect(u32 eport_id)
{
sys_event.warning("sys_event_port_disconnect(eport_id=0x%x)", eport_id);
writer_lock lock(id_manager::g_mutex);
std::lock_guard lock(id_manager::g_mutex);
const auto port = idm::check_unlocked<lv2_obj, lv2_event_port>(eport_id);