From f3eb4e3ddffae020b3ed5c2991373497296365b0 Mon Sep 17 00:00:00 2001 From: Igor Venevtsev Date: Wed, 15 Sep 2021 13:35:03 +0000 Subject: [PATCH] Add memoryHandle to EuThread Signed-off-by: Igor Venevtsev --- level_zero/tools/source/debug/eu_thread.h | 11 ++++++++++- .../sources/debug/debug_session_tests.cpp | 4 ++-- .../unit_tests/sources/debug/eu_thread_tests.cpp | 14 +++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/level_zero/tools/source/debug/eu_thread.h b/level_zero/tools/source/debug/eu_thread.h index a5545e6ca2..e46b571cb8 100644 --- a/level_zero/tools/source/debug/eu_thread.h +++ b/level_zero/tools/source/debug/eu_thread.h @@ -11,6 +11,7 @@ #include +#include #include #include #include @@ -64,7 +65,8 @@ class EuThread { EuThread(ThreadId threadId) : threadId(threadId) {} - bool stopThread() { + bool stopThread(uint64_t memHandle) { + memoryHandle = memHandle; if (state == State::Stopped) { return false; } @@ -113,6 +115,7 @@ class EuThread { } bool resumeThread() { + memoryHandle = invalidHandle; if (state != State::Stopped) { return false; } @@ -143,10 +146,16 @@ class EuThread { return threadId; } + uint64_t getMemoryHandle() { return memoryHandle; } + + public: + static constexpr uint64_t invalidHandle = std::numeric_limits::max(); + protected: ThreadId threadId; State state = State::Unavailable; uint8_t systemRoutineCounter = 0; + std::atomic memoryHandle = invalidHandle; }; static_assert(sizeof(EuThread::ThreadId) == sizeof(uint64_t)); diff --git a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp index f0dd6aecd7..734917a8e4 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp @@ -344,7 +344,7 @@ TEST(DebugSession, givenAllStoppedThreadsWhenAreRequestedThreadsStoppedCalledThe for (uint32_t i = 0; i < hwInfo.gtSystemInfo.ThreadCount / hwInfo.gtSystemInfo.EUCount; i++) { EuThread::ThreadId thread(0, 0, 0, 0, i); - sessionMock->allThreads[thread]->stopThread(); + sessionMock->allThreads[thread]->stopThread(1u); } ze_device_thread_t apiThread = {0, 0, 0, UINT32_MAX}; @@ -364,7 +364,7 @@ TEST(DebugSession, givenSomeStoppedThreadsWhenAreRequestedThreadsStoppedCalledTh for (uint32_t i = 0; i < hwInfo.gtSystemInfo.ThreadCount / hwInfo.gtSystemInfo.EUCount; i++) { EuThread::ThreadId thread(0, 0, 0, 0, i); if (i % 2) { - sessionMock->allThreads[thread]->stopThread(); + sessionMock->allThreads[thread]->stopThread(1u); } } diff --git a/level_zero/tools/test/unit_tests/sources/debug/eu_thread_tests.cpp b/level_zero/tools/test/unit_tests/sources/debug/eu_thread_tests.cpp index 3a6f46a86c..edcfd991eb 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/eu_thread_tests.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/eu_thread_tests.cpp @@ -56,19 +56,22 @@ TEST(EuThread, GivenEuThreadWhenChangingAndQueryingStatesThenStateIsChanged) { EXPECT_FALSE(euThread.isStopped()); EXPECT_TRUE(euThread.isRunning()); - bool result = euThread.stopThread(); + bool result = euThread.stopThread(0x1234); EXPECT_TRUE(result); EXPECT_TRUE(euThread.isStopped()); EXPECT_FALSE(euThread.isRunning()); + EXPECT_EQ(0x1234u, euThread.getMemoryHandle()); - result = euThread.stopThread(); + result = euThread.stopThread(0x5678); EXPECT_FALSE(result); EXPECT_TRUE(euThread.isStopped()); EXPECT_FALSE(euThread.isRunning()); + EXPECT_EQ(0x5678u, euThread.getMemoryHandle()); result = euThread.resumeThread(); + EXPECT_EQ(EuThread::invalidHandle, euThread.getMemoryHandle()); EXPECT_TRUE(result); EXPECT_FALSE(euThread.isStopped()); @@ -79,6 +82,7 @@ TEST(EuThread, GivenEuThreadWhenChangingAndQueryingStatesThenStateIsChanged) { EXPECT_FALSE(result); EXPECT_FALSE(euThread.isStopped()); EXPECT_TRUE(euThread.isRunning()); + EXPECT_EQ(EuThread::invalidHandle, euThread.getMemoryHandle()); } TEST(EuThread, GivenEuThreadWhenToStringCalledThenCorrectStringReturned) { @@ -106,7 +110,7 @@ TEST(EuThread, GivenThreadStateStoppedWhenVerifyingStopWithOddCounterThenTrueRet EuThread euThread(threadId); euThread.verifyStopped(1); - euThread.stopThread(); + euThread.stopThread(1u); EXPECT_TRUE(euThread.verifyStopped(1)); EXPECT_TRUE(euThread.isStopped()); @@ -118,7 +122,7 @@ TEST(EuThread, GivenThreadStateStoppedWhenVerifyingStopWithEvenCounterThenFalseR EuThread euThread(threadId); euThread.verifyStopped(1); - euThread.stopThread(); + euThread.stopThread(1u); EXPECT_FALSE(euThread.verifyStopped(2)); EXPECT_TRUE(euThread.isRunning()); @@ -134,7 +138,7 @@ TEST(EuThread, GivenEnabledErrorLogsWhenThreadStateStoppedAndVerifyingStopWithEv EuThread euThread(threadId); euThread.verifyStopped(1); - euThread.stopThread(); + euThread.stopThread(1u); ::testing::internal::CaptureStderr();