124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- State.h -------------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_State_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_State_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------ 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Converts a StateType to a C string. 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @param[in] state 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// The StateType object to convert. 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @return 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// A NULL terminated C string that describes \a state. The 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// returned string comes from constant string buffers and does 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// not need to be freed. 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------ 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst char * 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerStateAsCString (lldb::StateType state); 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 35202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------ 36202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// Check if a state represents a state where the process or thread 37202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// is running. 38202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// 39202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @param[in] state 40202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// The StateType enumeration value 41202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// 42202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @return 43202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// \b true if the state represents a process or thread state 44202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// where the process or thread is running, \b false otherwise. 45202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------ 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerStateIsRunningState (lldb::StateType state); 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 49202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------ 50202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// Check if a state represents a state where the process or thread 51202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// is stopped. Stopped can mean stopped when the process is still 52202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// around, or stopped when the process has exited or doesn't exist 53202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// yet. The \a must_exist argument tells us which of these cases is 54202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// desired. 55202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// 56202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @param[in] state 57202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// The StateType enumeration value 58202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// 59202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @param[in] must_exist 60202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// A boolean that indicates the thread must also be alive 61202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// so states like unloaded or exited won't return true. 62202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// 63202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @return 64202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// \b true if the state represents a process or thread state 65202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// where the process or thread is stopped. If \a must_exist is 66202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// \b true, then the process can't be exited or unloaded, 67202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// otherwise exited and unloaded or other states where the 68202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// process no longer exists are considered to be stopped. 69202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------ 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 71202060806d75f812b56a3cfa70d85fff536e5c2fGreg ClaytonStateIsStoppedState (lldb::StateType state, bool must_exist); 72202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton 73613b8739a4d489b7f1c571288d5786768c024205Greg Claytonconst char * 74613b8739a4d489b7f1c571288d5786768c024205Greg ClaytonGetPermissionsAsCString (uint32_t permissions); 75613b8739a4d489b7f1c571288d5786768c024205Greg Clayton 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_State_h_ 79