11fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton//===-- SBWatchpoint.cpp --------------------------------*- C++ -*-===// 2096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// 3096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// The LLVM Compiler Infrastructure 4096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// 5096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// This file is distributed under the University of Illinois Open Source 6096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// License. See LICENSE.TXT for details. 7096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// 8096c293f8d4171448908801d5a1a74b152af1430Johnny Chen//===----------------------------------------------------------------------===// 9096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 101fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton#include "lldb/API/SBWatchpoint.h" 11096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/API/SBDefines.h" 12096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/API/SBAddress.h" 13096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/API/SBDebugger.h" 149c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham#include "lldb/API/SBEvent.h" 15096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/API/SBStream.h" 16096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 17096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/lldb-types.h" 18096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/lldb-defines.h" 19ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen#include "lldb/Breakpoint/Watchpoint.h" 20ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen#include "lldb/Breakpoint/WatchpointList.h" 21096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/Core/Log.h" 22096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/Core/Stream.h" 23096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/Core/StreamFile.h" 24096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/Target/Target.h" 25096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 26096c293f8d4171448908801d5a1a74b152af1430Johnny Chenusing namespace lldb; 27096c293f8d4171448908801d5a1a74b152af1430Johnny Chenusing namespace lldb_private; 28096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 29096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 301fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::SBWatchpoint () : 31096c293f8d4171448908801d5a1a74b152af1430Johnny Chen m_opaque_sp () 32096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 33096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 34096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 35ecd4feb5111432d2878e95461220c720cb2d24c8Johnny ChenSBWatchpoint::SBWatchpoint (const lldb::WatchpointSP &wp_sp) : 36ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen m_opaque_sp (wp_sp) 37096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 38952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 39096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 40096c293f8d4171448908801d5a1a74b152af1430Johnny Chen if (log) 41096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 42096c293f8d4171448908801d5a1a74b152af1430Johnny Chen SBStream sstr; 43096c293f8d4171448908801d5a1a74b152af1430Johnny Chen GetDescription (sstr, lldb::eDescriptionLevelBrief); 44ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen log->Printf ("SBWatchpoint::SBWatchpoint (const lldb::WatchpointSP &wp_sp" 45ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen "=%p) => this.sp = %p (%s)", wp_sp.get(), m_opaque_sp.get(), sstr.GetData()); 46096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 47096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 48096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 491fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::SBWatchpoint(const SBWatchpoint &rhs) : 50096c293f8d4171448908801d5a1a74b152af1430Johnny Chen m_opaque_sp (rhs.m_opaque_sp) 51096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 52096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 53096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 541fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Claytonconst SBWatchpoint & 551fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::operator = (const SBWatchpoint &rhs) 56096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 57096c293f8d4171448908801d5a1a74b152af1430Johnny Chen if (this != &rhs) 58096c293f8d4171448908801d5a1a74b152af1430Johnny Chen m_opaque_sp = rhs.m_opaque_sp; 59096c293f8d4171448908801d5a1a74b152af1430Johnny Chen return *this; 60096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 61096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 62096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 631fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::~SBWatchpoint () 64096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 65096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 66096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 67092bd1575675778c6ebe901a7760af7427db617eJohnny Chenwatch_id_t 681fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::GetID () 69092bd1575675778c6ebe901a7760af7427db617eJohnny Chen{ 70952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 71092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 72092bd1575675778c6ebe901a7760af7427db617eJohnny Chen watch_id_t watch_id = LLDB_INVALID_WATCH_ID; 730a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 740a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 750a19a1b9c25117854f226256805239d95153ed2dGreg Clayton watch_id = watchpoint_sp->GetID(); 76092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 77092bd1575675778c6ebe901a7760af7427db617eJohnny Chen if (log) 78092bd1575675778c6ebe901a7760af7427db617eJohnny Chen { 79092bd1575675778c6ebe901a7760af7427db617eJohnny Chen if (watch_id == LLDB_INVALID_WATCH_ID) 800a19a1b9c25117854f226256805239d95153ed2dGreg Clayton log->Printf ("SBWatchpoint(%p)::GetID () => LLDB_INVALID_WATCH_ID", watchpoint_sp.get()); 81092bd1575675778c6ebe901a7760af7427db617eJohnny Chen else 820a19a1b9c25117854f226256805239d95153ed2dGreg Clayton log->Printf ("SBWatchpoint(%p)::GetID () => %u", watchpoint_sp.get(), watch_id); 83092bd1575675778c6ebe901a7760af7427db617eJohnny Chen } 84092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 85092bd1575675778c6ebe901a7760af7427db617eJohnny Chen return watch_id; 86092bd1575675778c6ebe901a7760af7427db617eJohnny Chen} 87092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 88096c293f8d4171448908801d5a1a74b152af1430Johnny Chenbool 891fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::IsValid() const 90096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 919880efacdd3a5e855b405d89433a01170422a889Jim Ingham return (bool) m_opaque_sp; 92096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 93096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 94a442da2c8213b09b6b3869c8e30b5d98023ed7baJim InghamSBError 95a442da2c8213b09b6b3869c8e30b5d98023ed7baJim InghamSBWatchpoint::GetError () 96a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham{ 97a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham SBError sb_error; 98a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham lldb::WatchpointSP watchpoint_sp(GetSP()); 99a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham if (watchpoint_sp) 100a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham { 101a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham sb_error.SetError(watchpoint_sp->GetError()); 102a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham } 103a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham return sb_error; 104a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham} 105a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham 106092bd1575675778c6ebe901a7760af7427db617eJohnny Chenint32_t 1071fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::GetHardwareIndex () 108092bd1575675778c6ebe901a7760af7427db617eJohnny Chen{ 109092bd1575675778c6ebe901a7760af7427db617eJohnny Chen int32_t hw_index = -1; 110092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 1110a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 1120a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 113092bd1575675778c6ebe901a7760af7427db617eJohnny Chen { 1140a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 1150a19a1b9c25117854f226256805239d95153ed2dGreg Clayton hw_index = watchpoint_sp->GetHardwareIndex(); 116092bd1575675778c6ebe901a7760af7427db617eJohnny Chen } 117092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 118092bd1575675778c6ebe901a7760af7427db617eJohnny Chen return hw_index; 119092bd1575675778c6ebe901a7760af7427db617eJohnny Chen} 120092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 121096c293f8d4171448908801d5a1a74b152af1430Johnny Chenaddr_t 1221fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::GetWatchAddress () 123096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 124096c293f8d4171448908801d5a1a74b152af1430Johnny Chen addr_t ret_addr = LLDB_INVALID_ADDRESS; 125096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 1260a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 1270a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 128096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 1290a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 1300a19a1b9c25117854f226256805239d95153ed2dGreg Clayton ret_addr = watchpoint_sp->GetLoadAddress(); 131096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 132096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 133096c293f8d4171448908801d5a1a74b152af1430Johnny Chen return ret_addr; 134096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 135096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 136096c293f8d4171448908801d5a1a74b152af1430Johnny Chensize_t 1371fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::GetWatchSize () 138096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 139096c293f8d4171448908801d5a1a74b152af1430Johnny Chen size_t watch_size = 0; 140096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 1410a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 1420a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 143096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 1440a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 1450a19a1b9c25117854f226256805239d95153ed2dGreg Clayton watch_size = watchpoint_sp->GetByteSize(); 146096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 147096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 148096c293f8d4171448908801d5a1a74b152af1430Johnny Chen return watch_size; 149096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 150096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 151096c293f8d4171448908801d5a1a74b152af1430Johnny Chenvoid 1521fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::SetEnabled (bool enabled) 153096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 1540a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 1550a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 156096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 1570a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 1580a19a1b9c25117854f226256805239d95153ed2dGreg Clayton watchpoint_sp->GetTarget().DisableWatchpointByID(watchpoint_sp->GetID()); 159096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 160096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 161096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 162096c293f8d4171448908801d5a1a74b152af1430Johnny Chenbool 1631fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::IsEnabled () 164096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 1650a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 1660a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 167096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 1680a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 1690a19a1b9c25117854f226256805239d95153ed2dGreg Clayton return watchpoint_sp->IsEnabled(); 170096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 171096c293f8d4171448908801d5a1a74b152af1430Johnny Chen else 172096c293f8d4171448908801d5a1a74b152af1430Johnny Chen return false; 173096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 174096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 175096c293f8d4171448908801d5a1a74b152af1430Johnny Chenuint32_t 1761fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::GetHitCount () 177092bd1575675778c6ebe901a7760af7427db617eJohnny Chen{ 178092bd1575675778c6ebe901a7760af7427db617eJohnny Chen uint32_t count = 0; 1790a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 1800a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 181092bd1575675778c6ebe901a7760af7427db617eJohnny Chen { 1820a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 1830a19a1b9c25117854f226256805239d95153ed2dGreg Clayton count = watchpoint_sp->GetHitCount(); 184092bd1575675778c6ebe901a7760af7427db617eJohnny Chen } 185092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 186952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 187092bd1575675778c6ebe901a7760af7427db617eJohnny Chen if (log) 1880a19a1b9c25117854f226256805239d95153ed2dGreg Clayton log->Printf ("SBWatchpoint(%p)::GetHitCount () => %u", watchpoint_sp.get(), count); 189092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 190092bd1575675778c6ebe901a7760af7427db617eJohnny Chen return count; 191092bd1575675778c6ebe901a7760af7427db617eJohnny Chen} 192092bd1575675778c6ebe901a7760af7427db617eJohnny Chen 193092bd1575675778c6ebe901a7760af7427db617eJohnny Chenuint32_t 1941fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::GetIgnoreCount () 195096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 1960a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 1970a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 198096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 1990a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 2000a19a1b9c25117854f226256805239d95153ed2dGreg Clayton return watchpoint_sp->GetIgnoreCount(); 201096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 202096c293f8d4171448908801d5a1a74b152af1430Johnny Chen else 203096c293f8d4171448908801d5a1a74b152af1430Johnny Chen return 0; 204096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 205096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 206096c293f8d4171448908801d5a1a74b152af1430Johnny Chenvoid 2071fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::SetIgnoreCount (uint32_t n) 208096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 2090a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 2100a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 211096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 2120a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 2130a19a1b9c25117854f226256805239d95153ed2dGreg Clayton watchpoint_sp->SetIgnoreCount (n); 214096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 215096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 216096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 217712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chenconst char * 218712a628dde2f4f786389feecf7e06e59f0853c75Johnny ChenSBWatchpoint::GetCondition () 219712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen{ 2200a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 2210a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 222712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen { 2230a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 2240a19a1b9c25117854f226256805239d95153ed2dGreg Clayton return watchpoint_sp->GetConditionText (); 225712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen } 226712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen return NULL; 227712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen} 228712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen 229712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chenvoid 230712a628dde2f4f786389feecf7e06e59f0853c75Johnny ChenSBWatchpoint::SetCondition (const char *condition) 231712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen{ 2320a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 2330a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 234712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen { 2350a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 2360a19a1b9c25117854f226256805239d95153ed2dGreg Clayton watchpoint_sp->SetCondition (condition); 237712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen } 238712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen} 239712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen 240096c293f8d4171448908801d5a1a74b152af1430Johnny Chenbool 2411fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg ClaytonSBWatchpoint::GetDescription (SBStream &description, DescriptionLevel level) 242096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 24396154be69fa240a662419183ed08e1cfc5418164Greg Clayton Stream &strm = description.ref(); 24496154be69fa240a662419183ed08e1cfc5418164Greg Clayton 2450a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::WatchpointSP watchpoint_sp(GetSP()); 2460a19a1b9c25117854f226256805239d95153ed2dGreg Clayton if (watchpoint_sp) 247096c293f8d4171448908801d5a1a74b152af1430Johnny Chen { 2480a19a1b9c25117854f226256805239d95153ed2dGreg Clayton Mutex::Locker api_locker (watchpoint_sp->GetTarget().GetAPIMutex()); 2490a19a1b9c25117854f226256805239d95153ed2dGreg Clayton watchpoint_sp->GetDescription (&strm, level); 25096154be69fa240a662419183ed08e1cfc5418164Greg Clayton strm.EOL(); 251096c293f8d4171448908801d5a1a74b152af1430Johnny Chen } 252096c293f8d4171448908801d5a1a74b152af1430Johnny Chen else 25396154be69fa240a662419183ed08e1cfc5418164Greg Clayton strm.PutCString ("No value"); 254096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 255096c293f8d4171448908801d5a1a74b152af1430Johnny Chen return true; 256096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 257096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 2580a19a1b9c25117854f226256805239d95153ed2dGreg Claytonvoid 2590a19a1b9c25117854f226256805239d95153ed2dGreg ClaytonSBWatchpoint::Clear () 260096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 2610a19a1b9c25117854f226256805239d95153ed2dGreg Clayton m_opaque_sp.reset(); 262096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 263096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 2640a19a1b9c25117854f226256805239d95153ed2dGreg Claytonlldb::WatchpointSP 2650a19a1b9c25117854f226256805239d95153ed2dGreg ClaytonSBWatchpoint::GetSP () const 266096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 2670a19a1b9c25117854f226256805239d95153ed2dGreg Clayton return m_opaque_sp; 268096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 269096c293f8d4171448908801d5a1a74b152af1430Johnny Chen 2700a19a1b9c25117854f226256805239d95153ed2dGreg Claytonvoid 2710a19a1b9c25117854f226256805239d95153ed2dGreg ClaytonSBWatchpoint::SetSP (const lldb::WatchpointSP &sp) 272096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{ 2730a19a1b9c25117854f226256805239d95153ed2dGreg Clayton m_opaque_sp = sp; 274096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} 2759c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham 2769c970a371511a0e31ba9360aa841d445792c1ab0Jim Inghambool 2779c970a371511a0e31ba9360aa841d445792c1ab0Jim InghamSBWatchpoint::EventIsWatchpointEvent (const lldb::SBEvent &event) 2789c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham{ 2799c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham return Watchpoint::WatchpointEventData::GetEventDataFromEvent(event.get()) != NULL; 2809c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham 2819c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham} 2829c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham 2839c970a371511a0e31ba9360aa841d445792c1ab0Jim InghamWatchpointEventType 2849c970a371511a0e31ba9360aa841d445792c1ab0Jim InghamSBWatchpoint::GetWatchpointEventTypeFromEvent (const SBEvent& event) 2859c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham{ 2869c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham if (event.IsValid()) 2879c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham return Watchpoint::WatchpointEventData::GetWatchpointEventTypeFromEvent (event.GetSP()); 2889c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham return eWatchpointEventTypeInvalidType; 2899c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham} 2909c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham 2919c970a371511a0e31ba9360aa841d445792c1ab0Jim InghamSBWatchpoint 2929c970a371511a0e31ba9360aa841d445792c1ab0Jim InghamSBWatchpoint::GetWatchpointFromEvent (const lldb::SBEvent& event) 2939c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham{ 2949c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham SBWatchpoint sb_watchpoint; 2959c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham if (event.IsValid()) 2969c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham sb_watchpoint.m_opaque_sp = Watchpoint::WatchpointEventData::GetWatchpointFromEvent (event.GetSP()); 2979c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham return sb_watchpoint; 2989c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham} 299