diff options
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/ProcessLinux.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/Linux/ProcessLinux.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp index e503ff08851..dae14d1c44c 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp @@ -136,6 +136,35 @@ ProcessLinux::EnablePluginLogging(Stream *strm, Args &command) return NULL; } +Error +ProcessLinux::DoDetach(bool keep_stopped) +{ + Error error; + if (keep_stopped) + { + // FIXME: If you want to implement keep_stopped, + // this would be the place to do it. + error.SetErrorString("Detaching with keep_stopped true is not currently supported on Linux."); + return error; + } + + Mutex::Locker lock(m_thread_list.GetMutex()); + + uint32_t thread_count = m_thread_list.GetSize(false); + for (uint32_t i = 0; i < thread_count; ++i) + { + POSIXThread *thread = static_cast<POSIXThread*>( + m_thread_list.GetThreadAtIndex(i, false).get()); + error = m_monitor->Detach(thread->GetID()); + } + + if (error.Success()) + SetPrivateState(eStateDetached); + + return error; +} + + // ProcessPOSIX override void ProcessLinux::StopAllThreads(lldb::tid_t stop_tid) |