sys_cond: add vm::temporary_unlock

This commit is contained in:
Nekotekina 2019-06-09 01:38:01 +03:00
parent 5d45a3e47d
commit 89a31292dc
6 changed files with 28 additions and 18 deletions

View file

@ -1147,7 +1147,7 @@ s32 _spurs::initialize(ppu_thread& ppu, vm::ptr<CellSpurs> spurs, u32 revision,
}
// Create condition variable to signal the SPURS handler thread
if (s32 rc = sys_lwcond_create(lwCond, lwMutex, vm::make_var(sys_lwcond_attribute_t{ "_spuPrv" })))
if (s32 rc = sys_lwcond_create(ppu, lwCond, lwMutex, vm::make_var(sys_lwcond_attribute_t{ "_spuPrv" })))
{
sys_lwmutex_destroy(ppu, lwMutex);
_spurs::finalize_spu(ppu, spurs);
@ -1165,7 +1165,7 @@ s32 _spurs::initialize(ppu_thread& ppu, vm::ptr<CellSpurs> spurs, u32 revision,
// Create the SPURS event helper thread
if (s32 rc = _spurs::create_event_helper(ppu, spurs, ppuPriority))
{
sys_lwcond_destroy(lwCond);
sys_lwcond_destroy(ppu, lwCond);
sys_lwmutex_destroy(ppu, lwMutex);
_spurs::finalize_spu(ppu, spurs);
return rollback(), rc;
@ -1175,7 +1175,7 @@ s32 _spurs::initialize(ppu_thread& ppu, vm::ptr<CellSpurs> spurs, u32 revision,
if (s32 rc = _spurs::create_handler(spurs, ppuPriority))
{
_spurs::stop_event_helper(ppu, spurs);
sys_lwcond_destroy(lwCond);
sys_lwcond_destroy(ppu, lwCond);
sys_lwmutex_destroy(ppu, lwMutex);
_spurs::finalize_spu(ppu, spurs);
return rollback(), rc;
@ -1187,7 +1187,7 @@ s32 _spurs::initialize(ppu_thread& ppu, vm::ptr<CellSpurs> spurs, u32 revision,
_spurs::signal_to_handler_thread(ppu, spurs);
_spurs::join_handler_thread(ppu, spurs);
_spurs::stop_event_helper(ppu, spurs);
sys_lwcond_destroy(lwCond);
sys_lwcond_destroy(ppu, lwCond);
sys_lwmutex_destroy(ppu, lwMutex);
_spurs::finalize_spu(ppu, spurs);
return rollback(), rc;