2 * Copyright 2012-2016, Rene Gollent, rene@gollent.com.
3 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
4 * Distributed under the terms of the MIT License.
9 #include <AutoLocker.h>
12 #include "DebuggerInterface.h"
17 GetThreadStateJob::GetThreadStateJob(DebuggerInterface
* debuggerInterface
,
20 fKey(thread
, JOB_TYPE_GET_THREAD_STATE
),
21 fDebuggerInterface(debuggerInterface
),
24 fThread
->AcquireReference();
28 GetThreadStateJob::~GetThreadStateJob()
30 fThread
->ReleaseReference();
35 GetThreadStateJob::Key() const
42 GetThreadStateJob::Do()
44 CpuState
* state
= NULL
;
45 status_t error
= fDebuggerInterface
->GetCpuState(fThread
->ID(), state
);
46 BReference
<CpuState
> reference(state
, true);
48 AutoLocker
<Team
> locker(fThread
->GetTeam());
50 if (fThread
->State() != THREAD_STATE_UNKNOWN
)
54 fThread
->SetState(THREAD_STATE_STOPPED
);
55 fThread
->SetCpuState(state
);
56 } else if (error
== B_BAD_THREAD_STATE
) {
57 fThread
->SetState(THREAD_STATE_RUNNING
);