vfs: check userland buffers before reading them.
[haiku.git] / src / kits / debugger / jobs / GetCPUStateJob.cpp
blobae8d30339e2e2ba5953b05fcf068cc76741c8b78
1 /*
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.
5 */
7 #include "Jobs.h"
9 #include <AutoLocker.h>
11 #include "CpuState.h"
12 #include "DebuggerInterface.h"
13 #include "Team.h"
14 #include "Thread.h"
17 GetCpuStateJob::GetCpuStateJob(DebuggerInterface* debuggerInterface,
18 ::Thread* thread)
20 fKey(thread, JOB_TYPE_GET_CPU_STATE),
21 fDebuggerInterface(debuggerInterface),
22 fThread(thread)
24 fThread->AcquireReference();
28 GetCpuStateJob::~GetCpuStateJob()
30 fThread->ReleaseReference();
34 const JobKey&
35 GetCpuStateJob::Key() const
37 return fKey;
41 status_t
42 GetCpuStateJob::Do()
44 CpuState* state;
45 status_t error = fDebuggerInterface->GetCpuState(fThread->ID(), state);
46 if (error != B_OK)
47 return error;
48 BReference<CpuState> reference(state, true);
50 AutoLocker<Team> locker(fThread->GetTeam());
52 if (fThread->State() == THREAD_STATE_STOPPED)
53 fThread->SetCpuState(state);
55 return B_OK;