Expose the Thread::GetQueueID() method through the SBThread API, similar to

the existing SBThread::GetQueueName() method.

llvm-svn: 193132
This commit is contained in:
Jason Molenda 2013-10-21 23:52:54 +00:00
parent 2fb40ce1dc
commit 4fdb5863b9
3 changed files with 37 additions and 0 deletions

View File

@ -94,6 +94,9 @@ public:
const char *
GetQueueName() const;
lldb::queue_id_t
GetQueueID() const;
void
StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);

View File

@ -133,6 +133,9 @@ public:
const char *
GetQueueName() const;
lldb::queue_id_t
GetQueueID() const;
void
StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
@ -281,6 +284,9 @@ public:
__swig_getmethods__["queue"] = GetQueueName
if _newclass: queue = property(GetQueueName, None, doc='''A read only property that returns the dispatch queue name of this thread as a string.''')
__swig_getmethods__["queue_id"] = GetQueueID
if _newclass: queue = property(GetQueueID, None, doc='''A read only property that returns the dispatch queue id of this thread as an integer.''')
__swig_getmethods__["stop_reason"] = GetStopReason
if _newclass: stop_reason = property(GetStopReason, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eStopReason") that represents the reason this thread stopped.''')

View File

@ -507,6 +507,34 @@ SBThread::GetQueueName () const
return name;
}
lldb::queue_id_t
SBThread::GetQueueID () const
{
queue_id_t id = LLDB_INVALID_QUEUE_ID;
Mutex::Locker api_locker;
ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
if (exe_ctx.HasThreadScope())
{
Process::StopLocker stop_locker;
if (stop_locker.TryLock(&exe_ctx.GetProcessPtr()->GetRunLock()))
{
id = exe_ctx.GetThreadPtr()->GetQueueID();
}
else
{
if (log)
log->Printf ("SBThread(%p)::GetQueueID() => error: process is running", exe_ctx.GetThreadPtr());
}
}
if (log)
log->Printf ("SBThread(%p)::GetQueueID () => 0x%" PRIx64, exe_ctx.GetThreadPtr(), id);
return id;
}
SBError
SBThread::ResumeNewPlan (ExecutionContext &exe_ctx, ThreadPlan *new_plan)
{