PPUThread refactoring

`CallbackManager` removed, added _gcm_intr_thread for cellGcmSys
`PPUThread` renamed to `ppu_thread`, inheritance allowed
Added lightweight command queue for `ppu_thread`
Implemented call stack dump for PPU
`get_current_thread_mutex` removed
`thread_ctrl::spawn`: minor initialization fix
`thread_ctrl::wait_for` added
`named_thread`: some methods added
`cpu_thread::run` added
Some bugs fixes, including SPU channels
This commit is contained in:
Nekotekina
2016-07-28 00:43:22 +03:00
parent 33c59fa51b
commit f8719c1230
99 changed files with 4480 additions and 4592 deletions
+3 -5
View File
@@ -17,8 +17,6 @@
extern logs::channel cellSpurs;
extern std::mutex& get_current_thread_mutex();
//----------------------------------------------------------------------------
// Function prototypes
//----------------------------------------------------------------------------
@@ -774,7 +772,7 @@ void spursSysServiceIdleHandler(SPUThread& spu, SpursKernelContext* ctxt)
{
bool shouldExit;
std::unique_lock<std::mutex> lock(get_current_thread_mutex(), std::defer_lock);
std::unique_lock<named_thread> lock(spu, std::defer_lock);
while (true)
{
@@ -864,8 +862,8 @@ void spursSysServiceIdleHandler(SPUThread& spu, SpursKernelContext* ctxt)
{
// The system service blocks by making a reservation and waiting on the lock line reservation lost event.
CHECK_EMU_STATUS;
if (!lock) lock.lock();
get_current_thread_cv().wait_for(lock, 1ms);
if (!lock) { lock.lock(); continue; }
thread_ctrl::wait_for(1000);
continue;
}