mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-17 08:11:51 +00:00
kernel explorer: Implement ability to view lwmutex owner
This commit is contained in:
parent
12044bd8b0
commit
f1cf62ac57
@ -205,7 +205,35 @@ void kernel_explorer::Update()
|
||||
case SYS_LWMUTEX_OBJECT:
|
||||
{
|
||||
auto& lwm = static_cast<lv2_lwmutex&>(obj);
|
||||
l_addTreeChild(node, qstr(fmt::format(u8"LWMutex: ID = 0x%08x “%s”, Wq = %zu", id, lv2_obj::name64(lwm.name), lwm.sq.size())));
|
||||
std::string owner_str = "unknown"; // Either invalid state or the lwmutex control data was moved from
|
||||
sys_lwmutex_t lwm_data{};
|
||||
|
||||
if (lwm.control.try_read(lwm_data))
|
||||
{
|
||||
switch (const u32 owner = lwm_data.vars.owner)
|
||||
{
|
||||
case lwmutex_free: owner_str = "free"; break;
|
||||
//case lwmutex_dead: owner_str = "dead"; break;
|
||||
case lwmutex_reserved: owner_str = "reserved"; break;
|
||||
default:
|
||||
{
|
||||
if (owner >= ppu_thread::id_base && owner <= ppu_thread::id_base + ppu_thread::id_step - 1)
|
||||
{
|
||||
owner_str = fmt::format("0x%x", owner);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
l_addTreeChild(node, qstr(fmt::format(u8"LWMutex: ID = 0x%08x “%s”, Wq = %zu (Couldn't extract control data)", id, lv2_obj::name64(lwm.name), lwm.sq.size())));
|
||||
break;
|
||||
}
|
||||
|
||||
l_addTreeChild(node, qstr(fmt::format(u8"LWMutex: ID = 0x%08x “%s”,%s Owner = %s, Locks = %u, Wq = %zu", id, lv2_obj::name64(lwm.name),
|
||||
(lwm_data.attribute & SYS_SYNC_RECURSIVE) ? " Recursive," : "", owner_str, lwm_data.recursive_count, lwm.sq.size())));
|
||||
break;
|
||||
}
|
||||
case SYS_TIMER_OBJECT:
|
||||
|
Loading…
Reference in New Issue
Block a user