//===-- ThreadPlanSingleThreadTimeout.h -------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_TARGET_THREADPLANSINGLETHREADTIMEOUT_H #define LLDB_TARGET_THREADPLANSINGLETHREADTIMEOUT_H #include "lldb/Target/Thread.h" #include "lldb/Target/ThreadPlan.h" #include "lldb/Utility/Event.h" #include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/State.h" #include <chrono> #include <thread> namespace lldb_private { class ThreadPlanSingleThreadTimeout; // // Thread plan used by single thread execution to issue timeout. This is useful // to detect potential deadlock in single thread execution. The timeout measures // the elapsed time from the last internal stop and gets reset by each internal // stop to ensure we are accurately detecting execution not moving forward. // This means this thread plan may be created/destroyed multiple times by the // parent execution plan. // // When a timeout happens, the thread plan resolves the potential deadlock by // issuing a thread specific async interrupt to enter stop state, then execution // is resumed with all threads running to resolve the potential deadlock // class ThreadPlanSingleThreadTimeout : public ThreadPlan { … }; } // namespace lldb_private #endif // LLDB_TARGET_THREADPLANSINGLETHREADTIMEOUT_H