mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 22:00:39 -06:00
Debugger: Add a Thread widget
DebugInterface: Add GetThreads WatchWidget: Update widget on AddWatch
This commit is contained in:
63
Source/Core/Common/Debug/Threads.h
Normal file
63
Source/Core/Common/Debug/Threads.h
Normal file
@ -0,0 +1,63 @@
|
||||
// Copyright 2020 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <array>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
|
||||
namespace Common::Debug
|
||||
{
|
||||
struct PartialContext
|
||||
{
|
||||
std::optional<std::array<u32, 32>> gpr;
|
||||
std::optional<u32> cr;
|
||||
std::optional<u32> lr;
|
||||
std::optional<u32> ctr;
|
||||
std::optional<u32> xer;
|
||||
std::optional<std::array<double, 32>> fpr;
|
||||
std::optional<u64> fpscr;
|
||||
std::optional<u32> srr0;
|
||||
std::optional<u32> srr1;
|
||||
std::optional<u16> dummy;
|
||||
std::optional<u16> state;
|
||||
std::optional<std::array<u32, 8>> gqr;
|
||||
std::optional<std::array<double, 32>> psf;
|
||||
};
|
||||
|
||||
class ThreadView
|
||||
{
|
||||
public:
|
||||
virtual ~ThreadView() = default;
|
||||
|
||||
enum class API
|
||||
{
|
||||
OSThread, // Nintendo SDK thread
|
||||
LWPThread, // devkitPro libogc thread
|
||||
};
|
||||
|
||||
virtual PartialContext GetContext() const = 0;
|
||||
virtual u32 GetAddress() const = 0;
|
||||
virtual u16 GetState() const = 0;
|
||||
virtual bool IsSuspended() const = 0;
|
||||
virtual bool IsDetached() const = 0;
|
||||
virtual s32 GetBasePriority() const = 0;
|
||||
virtual s32 GetEffectivePriority() const = 0;
|
||||
virtual u32 GetStackStart() const = 0;
|
||||
virtual u32 GetStackEnd() const = 0;
|
||||
virtual std::size_t GetStackSize() const = 0;
|
||||
virtual s32 GetErrno() const = 0;
|
||||
// Implementation specific, used to store arbitrary data
|
||||
virtual std::string GetSpecific() const = 0;
|
||||
virtual bool IsValid() const = 0;
|
||||
};
|
||||
|
||||
using Threads = std::vector<std::unique_ptr<ThreadView>>;
|
||||
|
||||
} // namespace Common::Debug
|
Reference in New Issue
Block a user