diff options
Diffstat (limited to 'source/Plugins/Process/Linux/LinuxThread.cpp')
-rw-r--r-- | source/Plugins/Process/Linux/LinuxThread.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/source/Plugins/Process/Linux/LinuxThread.cpp b/source/Plugins/Process/Linux/LinuxThread.cpp new file mode 100644 index 000000000..edb21bdbe --- /dev/null +++ b/source/Plugins/Process/Linux/LinuxThread.cpp @@ -0,0 +1,63 @@ +//===-- LinuxThread.cpp -----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "LinuxThread.h" + +using namespace lldb; +using namespace lldb_private; + +//------------------------------------------------------------------------------ +// Constructors and destructors. + +LinuxThread::LinuxThread(Process &process, lldb::tid_t tid) + : POSIXThread(process, tid) +{ +} + +LinuxThread::~LinuxThread() +{ +} + +//------------------------------------------------------------------------------ +// ProcessInterface protocol. + +void +LinuxThread::RefreshStateAfterStop() +{ + // Invalidate the thread names every time we get a stop event on Linux so we + // will re-read the procfs comm virtual file when folks ask for the thread name. + m_thread_name_valid = false; + + POSIXThread::RefreshStateAfterStop(); +} + +void +LinuxThread::TraceNotify(const ProcessMessage &message) +{ + RegisterContextPOSIX* reg_ctx = GetRegisterContextPOSIX(); + if (reg_ctx) + { + uint32_t num_hw_wps = reg_ctx->NumSupportedHardwareWatchpoints(); + uint32_t wp_idx; + for (wp_idx = 0; wp_idx < num_hw_wps; wp_idx++) + { + if (reg_ctx->IsWatchpointHit(wp_idx)) + { + WatchNotify(message); + return; + } + } + } + + POSIXThread::TraceNotify (message); +}
\ No newline at end of file |