mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-21 03:55:32 +00:00
kernel explorer: Add more information about SPU/PPU threads
This commit is contained in:
parent
dd6825a7bd
commit
f4f0fb88b1
4 changed files with 28 additions and 6 deletions
|
@ -77,7 +77,7 @@ void fmt_class_string<ppu_join_status>::format(std::string& out, u64 arg)
|
|||
{
|
||||
switch (js)
|
||||
{
|
||||
case ppu_join_status::joinable: return "";
|
||||
case ppu_join_status::joinable: return "none";
|
||||
case ppu_join_status::detached: return "detached";
|
||||
case ppu_join_status::zombie: return "zombie";
|
||||
case ppu_join_status::exited: return "exited";
|
||||
|
|
|
@ -25,6 +25,28 @@ LOG_CHANNEL(sys_spu);
|
|||
|
||||
extern u64 get_timebased_time();
|
||||
|
||||
template <>
|
||||
void fmt_class_string<spu_group_status>::format(std::string& out, u64 arg)
|
||||
{
|
||||
format_enum(out, arg, [](spu_group_status value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case SPU_THREAD_GROUP_STATUS_NOT_INITIALIZED: return "uninitialized";
|
||||
case SPU_THREAD_GROUP_STATUS_INITIALIZED: return "initialized";
|
||||
case SPU_THREAD_GROUP_STATUS_READY: return "ready";
|
||||
case SPU_THREAD_GROUP_STATUS_WAITING: return "waiting";
|
||||
case SPU_THREAD_GROUP_STATUS_SUSPENDED: return "suspended";
|
||||
case SPU_THREAD_GROUP_STATUS_WAITING_AND_SUSPENDED: return "waiting and suspended";
|
||||
case SPU_THREAD_GROUP_STATUS_RUNNING: return "running";
|
||||
case SPU_THREAD_GROUP_STATUS_STOPPED: return "stopped";
|
||||
case SPU_THREAD_GROUP_STATUS_UNKNOWN: break;
|
||||
}
|
||||
|
||||
return unknown;
|
||||
});
|
||||
}
|
||||
|
||||
void sys_spu_image::load(const fs::file& stream)
|
||||
{
|
||||
const spu_exec_object obj{stream, 0, elf_opt::no_sections + elf_opt::no_data};
|
||||
|
|
|
@ -48,7 +48,7 @@ enum
|
|||
SYS_SPU_THREAD_GROUP_LOG_GET_STATUS = 0x2,
|
||||
};
|
||||
|
||||
enum : u32
|
||||
enum spu_group_status : u32
|
||||
{
|
||||
SPU_THREAD_GROUP_STATUS_NOT_INITIALIZED,
|
||||
SPU_THREAD_GROUP_STATUS_INITIALIZED,
|
||||
|
@ -263,7 +263,7 @@ struct lv2_spu_group
|
|||
|
||||
atomic_t<u32> init; // Initialization Counter
|
||||
atomic_t<s32> prio; // SPU Thread Group Priority
|
||||
atomic_t<u32> run_state; // SPU Thread Group State
|
||||
atomic_t<spu_group_status> run_state; // SPU Thread Group State
|
||||
atomic_t<s32> exit_status; // SPU Thread Group Exit Status
|
||||
atomic_t<u32> join_state; // flags used to detect exit cause and signal
|
||||
atomic_t<u32> running; // Number of running threads
|
||||
|
|
|
@ -282,7 +282,7 @@ void kernel_explorer::Update()
|
|||
idm::select<named_thread<ppu_thread>>([&](u32 id, ppu_thread& ppu)
|
||||
{
|
||||
lv2_types.back().count++;
|
||||
l_addTreeChild(lv2_types.back().node, qstr(fmt::format(u8"PPU Thread: ID = 0x%08x “%s”", id, *ppu.ppu_tname.load())));
|
||||
l_addTreeChild(lv2_types.back().node, qstr(fmt::format(u8"PPU: ID = 0x%07x “%s”, priority = %d, joiner = %s, state = %s", id, *ppu.ppu_tname.load(), +ppu.prio, ppu.joiner.load(), ppu.state.load())));
|
||||
});
|
||||
|
||||
lv2_types.emplace_back(l_addTreeChild(root, "SPU Threads"));
|
||||
|
@ -290,7 +290,7 @@ void kernel_explorer::Update()
|
|||
idm::select<named_thread<spu_thread>>([&](u32 /*id*/, spu_thread& spu)
|
||||
{
|
||||
lv2_types.back().count++;
|
||||
l_addTreeChild(lv2_types.back().node, qstr(fmt::format(u8"SPU Thread: ID = 0x%08x “%s”", spu.lv2_id, *spu.spu_tname.load())));
|
||||
l_addTreeChild(lv2_types.back().node, qstr(fmt::format(u8"SPU: ID = 0x%07x “%s”, state = %s", spu.lv2_id, *spu.spu_tname.load(), spu.state.load())));
|
||||
});
|
||||
|
||||
lv2_types.emplace_back(l_addTreeChild(root, "SPU Thread Groups"));
|
||||
|
@ -298,7 +298,7 @@ void kernel_explorer::Update()
|
|||
idm::select<lv2_spu_group>([&](u32 id, lv2_spu_group& tg)
|
||||
{
|
||||
lv2_types.back().count++;
|
||||
l_addTreeChild(lv2_types.back().node, qstr(fmt::format(u8"SPU Thread Group: ID = 0x%08x “%s”", id, tg.name)));
|
||||
l_addTreeChild(lv2_types.back().node, qstr(fmt::format(u8"SPU Group: ID = 0x%07x “%s”, status = %s, priority = %d, type = 0x%x", id, tg.name, tg.run_state.load(), +tg.prio, tg.type)));
|
||||
});
|
||||
|
||||
lv2_types.emplace_back(l_addTreeChild(root, "File Descriptors"));
|
||||
|
|
Loading…
Add table
Reference in a new issue