mirror of
https://github.com/VSadov/Satori.git
synced 2025-06-09 17:44:48 +09:00
[cdac] Implement ISOSDacInterface.GetThreadData (#103324)
- Implement `GetThreadData` in `Thread` contract - Finish implementing `ISOSDacInterface::GetThreadData` in cDAC - Add `ExceptionInfo` to cDAC types
This commit is contained in:
parent
01172dba2e
commit
547e69e0b7
13 changed files with 204 additions and 65 deletions
|
@ -19,61 +19,12 @@ record struct ThreadStoreCounts (
|
|||
|
||||
enum ThreadState
|
||||
{
|
||||
TS_Unknown = 0x00000000, // threads are initialized this way
|
||||
|
||||
TS_AbortRequested = 0x00000001, // Abort the thread
|
||||
|
||||
TS_GCSuspendRedirected = 0x00000004, // ThreadSuspend::SuspendRuntime has redirected the thread to suspention routine.
|
||||
|
||||
TS_DebugSuspendPending = 0x00000008, // Is the debugger suspending threads?
|
||||
TS_GCOnTransitions = 0x00000010, // Force a GC on stub transitions (GCStress only)
|
||||
|
||||
TS_LegalToJoin = 0x00000020, // Is it now legal to attempt a Join()
|
||||
|
||||
TS_ExecutingOnAltStack = 0x00000040, // Runtime is executing on an alternate stack located anywhere in the memory
|
||||
|
||||
TS_Hijacked = 0x00000080, // Return address has been hijacked
|
||||
|
||||
// unused = 0x00000100,
|
||||
TS_Background = 0x00000200, // Thread is a background thread
|
||||
TS_Unstarted = 0x00000400, // Thread has never been started
|
||||
TS_Dead = 0x00000800, // Thread is dead
|
||||
|
||||
TS_WeOwn = 0x00001000, // Exposed object initiated this thread
|
||||
TS_CoInitialized = 0x00002000, // CoInitialize has been called for this thread
|
||||
|
||||
TS_InSTA = 0x00004000, // Thread hosts an STA
|
||||
TS_InMTA = 0x00008000, // Thread is part of the MTA
|
||||
|
||||
// Some bits that only have meaning for reporting the state to clients.
|
||||
TS_ReportDead = 0x00010000, // in WaitForOtherThreads()
|
||||
TS_FullyInitialized = 0x00020000, // Thread is fully initialized and we are ready to broadcast its existence to external clients
|
||||
|
||||
TS_TaskReset = 0x00040000, // The task is reset
|
||||
|
||||
TS_SyncSuspended = 0x00080000, // Suspended via WaitSuspendEvent
|
||||
TS_DebugWillSync = 0x00100000, // Debugger will wait for this thread to sync
|
||||
|
||||
TS_StackCrawlNeeded = 0x00200000, // A stackcrawl is needed on this thread, such as for thread abort
|
||||
// See comment for s_pWaitForStackCrawlEvent for reason.
|
||||
|
||||
// unused = 0x00400000,
|
||||
|
||||
// unused = 0x00800000,
|
||||
TS_TPWorkerThread = 0x01000000, // is this a threadpool worker thread?
|
||||
|
||||
TS_Interruptible = 0x02000000, // sitting in a Sleep(), Wait(), Join()
|
||||
TS_Interrupted = 0x04000000, // was awakened by an interrupt APC. !!! This can be moved to TSNC
|
||||
|
||||
TS_CompletionPortThread = 0x08000000, // Completion port thread
|
||||
|
||||
TS_AbortInitiated = 0x10000000, // set when abort is begun
|
||||
|
||||
TS_Finalized = 0x20000000, // The associated managed Thread object has been finalized.
|
||||
// We can clean up the unmanaged part now.
|
||||
|
||||
TS_FailStarted = 0x40000000, // The thread fails during startup.
|
||||
TS_Detached = 0x80000000, // Thread was detached by DllMain
|
||||
Unknown = 0x00000000, // threads are initialized this way
|
||||
Hijacked = 0x00000080, // Return address has been hijacked
|
||||
Background = 0x00000200, // Thread is a background thread
|
||||
Unstarted = 0x00000400, // Thread has never been started
|
||||
Dead = 0x00000800, // Thread is dead
|
||||
ThreadPoolWorker = 0x01000000, // is this a threadpool worker thread?
|
||||
}
|
||||
|
||||
record struct ThreadData (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue