kernel_explorer: Order PPUs by priority
This commit is contained in:
@@ -651,15 +651,29 @@ void kernel_explorer::update()
|
|||||||
return fmt::format(" (%.1fs)", wait_time);
|
return fmt::format(" (%.1fs)", wait_time);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::vector<std::pair<s32, std::string>> ppu_threads;
|
||||||
|
|
||||||
idm::select<named_thread<ppu_thread>>([&](u32 id, ppu_thread& ppu)
|
idm::select<named_thread<ppu_thread>>([&](u32 id, ppu_thread& ppu)
|
||||||
{
|
{
|
||||||
const auto func = ppu.last_function;
|
const auto func = ppu.last_function;
|
||||||
const ppu_thread_status status = lv2_obj::ppu_state(&ppu, false, false).first;
|
const ppu_thread_status status = lv2_obj::ppu_state(&ppu, false, false).first;
|
||||||
|
|
||||||
add_leaf(find_node(root, additional_nodes::ppu_threads), QString::fromStdString(fmt::format(u8"PPU 0x%07x: “%s”, PRIO: %d, Joiner: %s, Status: %s, State: %s, %s func: “%s”%s", id, *ppu.ppu_tname.load(), ppu.prio.load().prio, ppu.joiner.load(), status, ppu.state.load()
|
const s32 prio = ppu.prio.load().prio;
|
||||||
, ppu.ack_suspend ? "After" : (ppu.current_function ? "In" : "Last"), func ? func : "", get_wait_time_str(ppu.start_time))));
|
std::string prio_text = fmt::format("%4d", prio);
|
||||||
|
prio_text = fmt::replace_all(prio_text, " ", " ");
|
||||||
|
|
||||||
|
ppu_threads.emplace_back(prio, fmt::format(u8"PPU 0x%07x: PRIO: %s, “%s”Joiner: %s, Status: %s, State: %s, %s func: “%s”%s", id, prio_text, *ppu.ppu_tname.load(), ppu.joiner.load(), status, ppu.state.load()
|
||||||
|
, ppu.ack_suspend ? "After" : (ppu.current_function ? "In" : "Last"), func ? func : "", get_wait_time_str(ppu.start_time)));
|
||||||
}, idm::unlocked);
|
}, idm::unlocked);
|
||||||
|
|
||||||
|
// Sort by priority
|
||||||
|
std::stable_sort(ppu_threads.begin(), ppu_threads.end(), FN(x.first < y.first));
|
||||||
|
|
||||||
|
for (const auto& [prio, text] : ppu_threads)
|
||||||
|
{
|
||||||
|
add_leaf(find_node(root, additional_nodes::ppu_threads), QString::fromStdString(text));
|
||||||
|
}
|
||||||
|
|
||||||
lock_idm_lv2.reset();
|
lock_idm_lv2.reset();
|
||||||
|
|
||||||
idm::select<named_thread<spu_thread>>([&](u32 /*id*/, spu_thread& spu)
|
idm::select<named_thread<spu_thread>>([&](u32 /*id*/, spu_thread& spu)
|
||||||
|
|||||||
Reference in New Issue
Block a user