diff options
Diffstat (limited to 'tools/debugserver/source/DNBThreadResumeActions.h')
-rw-r--r-- | tools/debugserver/source/DNBThreadResumeActions.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/tools/debugserver/source/DNBThreadResumeActions.h b/tools/debugserver/source/DNBThreadResumeActions.h new file mode 100644 index 0000000000000..81c7c43b72229 --- /dev/null +++ b/tools/debugserver/source/DNBThreadResumeActions.h @@ -0,0 +1,102 @@ +//===-- DNBThreadResumeActions.h --------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Created by Greg Clayton on 03/13/2010 +// +//===----------------------------------------------------------------------===// + + +#ifndef __DNBThreadResumeActions_h__ +#define __DNBThreadResumeActions_h__ + +#include <vector> + +#include "DNBDefs.h" + + +class DNBThreadResumeActions +{ +public: + DNBThreadResumeActions (); + + DNBThreadResumeActions (nub_state_t default_action, int signal); + + DNBThreadResumeActions (const DNBThreadResumeAction *actions, size_t num_actions); + + bool + IsEmpty() const + { + return m_actions.empty(); + } + + void + Append (const DNBThreadResumeAction &action); + + void + AppendAction (nub_thread_t tid, + nub_state_t state, + int signal = 0, + nub_addr_t addr = INVALID_NUB_ADDRESS); + + void + AppendResumeAll () + { + AppendAction (INVALID_NUB_THREAD, eStateRunning); + } + + void + AppendSuspendAll () + { + AppendAction (INVALID_NUB_THREAD, eStateStopped); + } + + void + AppendStepAll () + { + AppendAction (INVALID_NUB_THREAD, eStateStepping); + } + + const DNBThreadResumeAction * + GetActionForThread (nub_thread_t tid, bool default_ok) const; + + size_t + NumActionsWithState (nub_state_t state) const; + + bool + SetDefaultThreadActionIfNeeded (nub_state_t action, int signal); + + void + SetSignalHandledForThread (nub_thread_t tid) const; + + const DNBThreadResumeAction * + GetFirst() const + { + return m_actions.data(); + } + + size_t + GetSize () const + { + return m_actions.size(); + } + + void + Clear() + { + m_actions.clear(); + m_signal_handled.clear(); + } + +protected: + std::vector<DNBThreadResumeAction> m_actions; + mutable std::vector<bool> m_signal_handled; +}; + + +#endif // #ifndef __DNBThreadResumeActions_h__ |