internal void InitializeThreads(Inferior inferior, bool resume_threads)
{
if (thread_db != null)
return;
thread_db = ThreadDB.Create (this, inferior);
if (thread_db == null) {
if (!IsManaged)
return;
Report.Error ("Failed to initialize thread_db on {0}", start.CommandLine);
throw new TargetException (TargetError.CannotStartTarget,
"Failed to initialize thread_db on {0}", start.CommandLine);
}
int[] threads = inferior.GetThreads ();
foreach (int thread in threads) {
if (thread_hash.Contains (thread))
continue;
ThreadCreated (inferior, thread, Inferior.HasThreadEvents, resume_threads);
}
thread_db.GetThreadInfo (inferior, delegate (int lwp, long tid) {
SingleSteppingEngine engine = (SingleSteppingEngine) thread_hash [lwp];
if (engine == null) {
Report.Error ("Unknown thread {0} in {1}", lwp, start.CommandLine);
return;
}
engine.SetTID (tid);
});
}