/* Find a thread record given a thread id. If GET_CONTEXT is set then also retrieve the context for this thread. */ static win32_thread_info * thread_rec (ptid_t ptid, int get_context) { struct thread_info *thread; win32_thread_info *th; thread = (struct thread_info *) find_inferior_id (&all_threads, ptid); if (thread == NULL) return NULL; th = inferior_target_data (thread); if (get_context && th->context.ContextFlags == 0) { if (!th->suspended) { if (SuspendThread (th->h) == (DWORD) -1) { DWORD err = GetLastError (); OUTMSG (("warning: SuspendThread failed in thread_rec, " "(error %d): %s\n", (int) err, strwinerror (err))); } else th->suspended = 1; } win32_get_thread_context (th); } return th; }
void win32_require_context (win32_thread_info *th) { if (th->context.ContextFlags == 0) { if (!th->suspended) { if (SuspendThread (th->h) == (DWORD) -1) { DWORD err = GetLastError (); OUTMSG (("warning: SuspendThread failed in thread_rec, " "(error %d): %s\n", (int) err, strwinerror (err))); } else th->suspended = 1; } win32_get_thread_context (th); } }