summaryrefslogtreecommitdiff
path: root/tools/debugserver/source/DNBThreadResumeActions.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/debugserver/source/DNBThreadResumeActions.h')
-rw-r--r--tools/debugserver/source/DNBThreadResumeActions.h102
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__