Skip to content

Commit f6e6fc3

Browse files
committed
[lldb/Process] Populate queues in Scripted Process
This patch enhances queue support in Scripted Processes. Scripted Threads could already report their queue name if they had one, but this information was only surfaced when getting the process and thread status. However, no queue was create and added to the scripted process queue list. This patch improves that by creating a queue from the scripted thread queue name. For now, it uses an invalid queue id, since the scripted thread doesn't expose this capability yet, but this could easily be supported if the queue id information is available. rdar://98844004 Differential Revision: https://reviews.llvm.org/D139853 Signed-off-by: Med Ismail Bennani <[email protected]>
1 parent fcc3d3e commit f6e6fc3

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

lldb/include/lldb/Target/Process.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2133,7 +2133,7 @@ class Process : public std::enable_shared_from_this<Process>,
21332133

21342134
// Queue Queries
21352135

2136-
void UpdateQueueListIfNeeded();
2136+
virtual void UpdateQueueListIfNeeded();
21372137

21382138
QueueList &GetQueueList() {
21392139
UpdateQueueListIfNeeded();

lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "lldb/Interpreter/ScriptInterpreter.h"
2121
#include "lldb/Interpreter/ScriptedMetadata.h"
2222
#include "lldb/Target/MemoryRegionInfo.h"
23+
#include "lldb/Target/Queue.h"
2324
#include "lldb/Target/RegisterContext.h"
2425
#include "lldb/Utility/LLDBLog.h"
2526
#include "lldb/Utility/State.h"
@@ -497,6 +498,17 @@ lldb_private::StructuredData::DictionarySP ScriptedProcess::GetMetadata() {
497498
return metadata_sp;
498499
}
499500

501+
void ScriptedProcess::UpdateQueueListIfNeeded() {
502+
CheckInterpreterAndScriptObject();
503+
for (ThreadSP thread_sp : Threads()) {
504+
if (const char *queue_name = thread_sp->GetQueueName()) {
505+
QueueSP queue_sp = std::make_shared<Queue>(
506+
m_process->shared_from_this(), thread_sp->GetQueueID(), queue_name);
507+
m_queue_list.AddQueue(queue_sp);
508+
}
509+
}
510+
}
511+
500512
ScriptedProcessInterface &ScriptedProcess::GetInterface() const {
501513
return m_interpreter->GetScriptedProcessInterface();
502514
}

lldb/source/Plugins/Process/scripted/ScriptedProcess.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ class ScriptedProcess : public Process {
7272

7373
lldb_private::StructuredData::DictionarySP GetMetadata() override;
7474

75+
void UpdateQueueListIfNeeded() override;
76+
7577
protected:
7678
ScriptedProcess(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp,
7779
const ScriptedMetadata &scripted_metadata, Status &error);

0 commit comments

Comments
 (0)