Skip to content

Commit f3eb4e3

Browse files
Add memoryHandle to EuThread
Signed-off-by: Igor Venevtsev <[email protected]>
1 parent 603250a commit f3eb4e3

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

level_zero/tools/source/debug/eu_thread.h

+10-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include <level_zero/ze_api.h>
1313

14+
#include <atomic>
1415
#include <limits>
1516
#include <sstream>
1617
#include <string>
@@ -64,7 +65,8 @@ class EuThread {
6465

6566
EuThread(ThreadId threadId) : threadId(threadId) {}
6667

67-
bool stopThread() {
68+
bool stopThread(uint64_t memHandle) {
69+
memoryHandle = memHandle;
6870
if (state == State::Stopped) {
6971
return false;
7072
}
@@ -113,6 +115,7 @@ class EuThread {
113115
}
114116

115117
bool resumeThread() {
118+
memoryHandle = invalidHandle;
116119
if (state != State::Stopped) {
117120
return false;
118121
}
@@ -143,10 +146,16 @@ class EuThread {
143146
return threadId;
144147
}
145148

149+
uint64_t getMemoryHandle() { return memoryHandle; }
150+
151+
public:
152+
static constexpr uint64_t invalidHandle = std::numeric_limits<uint64_t>::max();
153+
146154
protected:
147155
ThreadId threadId;
148156
State state = State::Unavailable;
149157
uint8_t systemRoutineCounter = 0;
158+
std::atomic<uint64_t> memoryHandle = invalidHandle;
150159
};
151160

152161
static_assert(sizeof(EuThread::ThreadId) == sizeof(uint64_t));

level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ TEST(DebugSession, givenAllStoppedThreadsWhenAreRequestedThreadsStoppedCalledThe
344344

345345
for (uint32_t i = 0; i < hwInfo.gtSystemInfo.ThreadCount / hwInfo.gtSystemInfo.EUCount; i++) {
346346
EuThread::ThreadId thread(0, 0, 0, 0, i);
347-
sessionMock->allThreads[thread]->stopThread();
347+
sessionMock->allThreads[thread]->stopThread(1u);
348348
}
349349

350350
ze_device_thread_t apiThread = {0, 0, 0, UINT32_MAX};
@@ -364,7 +364,7 @@ TEST(DebugSession, givenSomeStoppedThreadsWhenAreRequestedThreadsStoppedCalledTh
364364
for (uint32_t i = 0; i < hwInfo.gtSystemInfo.ThreadCount / hwInfo.gtSystemInfo.EUCount; i++) {
365365
EuThread::ThreadId thread(0, 0, 0, 0, i);
366366
if (i % 2) {
367-
sessionMock->allThreads[thread]->stopThread();
367+
sessionMock->allThreads[thread]->stopThread(1u);
368368
}
369369
}
370370

level_zero/tools/test/unit_tests/sources/debug/eu_thread_tests.cpp

+9-5
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,22 @@ TEST(EuThread, GivenEuThreadWhenChangingAndQueryingStatesThenStateIsChanged) {
5656
EXPECT_FALSE(euThread.isStopped());
5757
EXPECT_TRUE(euThread.isRunning());
5858

59-
bool result = euThread.stopThread();
59+
bool result = euThread.stopThread(0x1234);
6060

6161
EXPECT_TRUE(result);
6262
EXPECT_TRUE(euThread.isStopped());
6363
EXPECT_FALSE(euThread.isRunning());
64+
EXPECT_EQ(0x1234u, euThread.getMemoryHandle());
6465

65-
result = euThread.stopThread();
66+
result = euThread.stopThread(0x5678);
6667

6768
EXPECT_FALSE(result);
6869
EXPECT_TRUE(euThread.isStopped());
6970
EXPECT_FALSE(euThread.isRunning());
71+
EXPECT_EQ(0x5678u, euThread.getMemoryHandle());
7072

7173
result = euThread.resumeThread();
74+
EXPECT_EQ(EuThread::invalidHandle, euThread.getMemoryHandle());
7275

7376
EXPECT_TRUE(result);
7477
EXPECT_FALSE(euThread.isStopped());
@@ -79,6 +82,7 @@ TEST(EuThread, GivenEuThreadWhenChangingAndQueryingStatesThenStateIsChanged) {
7982
EXPECT_FALSE(result);
8083
EXPECT_FALSE(euThread.isStopped());
8184
EXPECT_TRUE(euThread.isRunning());
85+
EXPECT_EQ(EuThread::invalidHandle, euThread.getMemoryHandle());
8286
}
8387

8488
TEST(EuThread, GivenEuThreadWhenToStringCalledThenCorrectStringReturned) {
@@ -106,7 +110,7 @@ TEST(EuThread, GivenThreadStateStoppedWhenVerifyingStopWithOddCounterThenTrueRet
106110
EuThread euThread(threadId);
107111

108112
euThread.verifyStopped(1);
109-
euThread.stopThread();
113+
euThread.stopThread(1u);
110114

111115
EXPECT_TRUE(euThread.verifyStopped(1));
112116
EXPECT_TRUE(euThread.isStopped());
@@ -118,7 +122,7 @@ TEST(EuThread, GivenThreadStateStoppedWhenVerifyingStopWithEvenCounterThenFalseR
118122
EuThread euThread(threadId);
119123

120124
euThread.verifyStopped(1);
121-
euThread.stopThread();
125+
euThread.stopThread(1u);
122126

123127
EXPECT_FALSE(euThread.verifyStopped(2));
124128
EXPECT_TRUE(euThread.isRunning());
@@ -134,7 +138,7 @@ TEST(EuThread, GivenEnabledErrorLogsWhenThreadStateStoppedAndVerifyingStopWithEv
134138
EuThread euThread(threadId);
135139

136140
euThread.verifyStopped(1);
137-
euThread.stopThread();
141+
euThread.stopThread(1u);
138142

139143
::testing::internal::CaptureStderr();
140144

0 commit comments

Comments
 (0)