-
Notifications
You must be signed in to change notification settings - Fork 129
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GDBServer fixes #3592
GDBServer fixes #3592
Changes from all commits
4b2267e
160b8f3
22be1f0
356bece
915d427
24cee5e
fd88ef9
a4f70d7
eb345ba
a86d51d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,6 +37,7 @@ class GdbServer { | |
|
||
private: | ||
void Break(int signal); | ||
void BreakThread(FEXCore::Core::InternalThreadState* Thread, int signal); | ||
|
||
void OpenListenSocket(); | ||
void CloseListenSocket(); | ||
|
@@ -53,6 +54,11 @@ class GdbServer { | |
void SendACK(std::ostream& stream, bool NACK); | ||
|
||
Event ThreadBreakEvent {}; | ||
struct ThreadBreakEventInfoStruct { | ||
uint64_t HostPC {}; | ||
FEXCore::Core::InternalThreadState* Thread {}; | ||
}; | ||
ThreadBreakEventInfoStruct ThreadBreakEventInfo {}; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Using |
||
void WaitForThreadWakeup(); | ||
|
||
struct HandledPacketType { | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -111,13 +111,15 @@ class ThreadManager final { | |
void StopThread(FEXCore::Core::InternalThreadState* Thread); | ||
void RunThread(FEXCore::Core::InternalThreadState* Thread); | ||
|
||
void RunPrimaryThread(FEXCore::Context::Context* CTX, FEXCore::Core::InternalThreadState* Thread); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the difference between this and "RunThread"? |
||
|
||
void Pause(); | ||
void Run(); | ||
void Step(); | ||
void Stop(bool IgnoreCurrentThread = false); | ||
void Pausing(FEXCore::Core::InternalThreadState* Thread); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the difference between this and "Pause"? |
||
|
||
void WaitForIdle(); | ||
void WaitForIdleWithTimeout(); | ||
void WaitForThreadsToRun(); | ||
|
||
void SleepThread(FEXCore::Context::Context* CTX, FEXCore::Core::CpuStateFrame* Frame); | ||
|
@@ -160,6 +162,8 @@ class ThreadManager final { | |
} | ||
|
||
private: | ||
FEX_CONFIG_OPT(GdbServer, GDBSERVER); | ||
|
||
FEXCore::Context::Context* CTX; | ||
FEX::HLE::SignalDelegator* SignalDelegation; | ||
|
||
|
@@ -169,7 +173,6 @@ class ThreadManager final { | |
// Thread idling support. | ||
bool Running {}; | ||
std::mutex IdleWaitMutex; | ||
std::condition_variable IdleWaitCV; | ||
std::atomic<uint32_t> IdleWaitRefCount {}; | ||
|
||
void HandleThreadDeletion(FEXCore::Core::InternalThreadState* Thread); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the difference between this and
Break
?