cpu: Rename GpuThread in gpu_ruby_test tester

The GpuThread class will be used as an abstract class for any thread
type (CPU, GPU, DMA) therefore changing to a more appropriate name.

Change-Id: If241edb53ea405c95b0315c609176c6470b29931
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39935
Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Matt Sinclair <mattdsinclair@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Matthew Poremba
2021-01-27 13:43:33 -08:00
parent bd02699932
commit 2b0ab1f48e
16 changed files with 95 additions and 95 deletions

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
# Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
# All rights reserved.
#
# For use for simulation and test purposes only
@@ -32,8 +32,8 @@
from m5.params import *
from m5.proxy import *
from m5.objects.GpuThread import GpuThread
from m5.objects.TesterThread import TesterThread
class CpuThread(GpuThread):
class CpuThread(TesterThread):
type = 'CpuThread'
cxx_header = "cpu/testers/gpu_ruby_test/cpu_thread.hh"

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
# Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
# All rights reserved.
#
# For use for simulation and test purposes only
@@ -32,9 +32,9 @@
from m5.params import *
from m5.proxy import *
from m5.objects.GpuThread import GpuThread
from m5.objects.TesterThread import TesterThread
class GpuWavefront(GpuThread):
class GpuWavefront(TesterThread):
type = 'GpuWavefront'
cxx_header = "cpu/testers/gpu_ruby_test/gpu_wavefront.hh"
cu_id = Param.Int("Compute Unit ID")

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -113,11 +113,11 @@ AddressManager.hh/cc -- This manages address space, randomly maps address to
location, generates locations for all episodes,
maintains per-location last writer and validates
values returned from load actions.
GpuThread.hh/cc -- This is abstract class for CPU threads and GPU
TesterThread.hh/cc -- This is abstract class for CPU threads and GPU
wavefronts. It generates and executes a series of
episodes.
CpuThread.hh/cc -- Thread class for CPU threads. Not fully implemented yet
GpuWavefront.hh/cc -- GpuThread class for GPU wavefronts.
GpuWavefront.hh/cc -- Thread class for GPU wavefronts.
Episode.hh/cc -- Class to encapsulate an episode, notably including
episode load/store structure and ordering.

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
# Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
# All rights reserved.
#
# For use for simulation and test purposes only
@@ -40,15 +40,15 @@ if env['PROTOCOL'] == 'None':
Return()
SimObject('ProtocolTester.py')
SimObject('GpuThread.py')
SimObject('CpuThread.py')
SimObject('GpuWavefront.py')
SimObject('TesterThread.py')
Source('address_manager.cc')
Source('episode.cc')
Source('protocol_tester.cc')
Source('gpu_thread.cc')
Source('cpu_thread.cc')
Source('gpu_wavefront.cc')
Source('tester_thread.cc')
DebugFlag('ProtocolTest')

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
# Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
# All rights reserved.
#
# For use for simulation and test purposes only
@@ -33,10 +33,10 @@ from m5.objects.ClockedObject import ClockedObject
from m5.params import *
from m5.proxy import *
class GpuThread(ClockedObject):
type = 'GpuThread'
class TesterThread(ClockedObject):
type = 'TesterThread'
abstract = True
cxx_header = "cpu/testers/gpu_ruby_test/gpu_thread.hh"
thread_id = Param.Int("Unique GpuThread ID")
cxx_header = "cpu/testers/gpu_ruby_test/tester_thread.hh"
thread_id = Param.Int("Unique TesterThread ID")
num_lanes = Param.Int("Number of lanes this thread has")
deadlock_threshold = Param.Cycles(1000000000, "Deadlock threshold")

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -161,7 +161,7 @@ class AddressManager
const std::string print() const
{
return "(GpuThread ID " + std::to_string(threadId) +
return "(TesterThread ID " + std::to_string(threadId) +
", CU ID " + std::to_string(cuId) +
", Episode ID " + std::to_string(episodeId) +
", Value " + std::to_string(value) +

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -36,7 +36,7 @@
#include "debug/ProtocolTest.hh"
CpuThread::CpuThread(const Params &p)
:GpuThread(p)
: TesterThread(p)
{
threadName = "CpuThread(Thread ID " + std::to_string(threadId) + ")";
threadEvent.setDesc("CpuThread tick");

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -34,11 +34,11 @@
#ifndef CPU_TESTERS_PROTOCOL_TESTER_CPU_THREAD_HH_
#define CPU_TESTERS_PROTOCOL_TESTER_CPU_THREAD_HH_
#include "cpu/testers/gpu_ruby_test/gpu_thread.hh"
#include "cpu/testers/gpu_ruby_test/tester_thread.hh"
#include "params/CpuThread.hh"
#include "sim/clocked_object.hh"
class CpuThread : public GpuThread
class CpuThread : public TesterThread
{
public:
typedef CpuThreadParams Params;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -36,10 +36,10 @@
#include <fstream>
#include <unordered_set>
#include "cpu/testers/gpu_ruby_test/gpu_thread.hh"
#include "cpu/testers/gpu_ruby_test/protocol_tester.hh"
#include "cpu/testers/gpu_ruby_test/tester_thread.hh"
Episode::Episode(ProtocolTester* _tester, GpuThread* _thread, int num_loads,
Episode::Episode(ProtocolTester* _tester, TesterThread* _thread, int num_loads,
int num_stores)
: tester(_tester),
thread(_thread),
@@ -156,8 +156,8 @@ Episode::initActions()
normal_loc, false) ||
!this->checkDRF(atomicLocs[lane], normal_loc,
false, lane)) {
panic("GpuTh %d - Data race detected. STOPPED!\n",
thread->getGpuThreadId());
panic("TestTh %d - Data race detected. STOPPED!\n",
thread->getTesterThreadId());
}
}
@@ -175,8 +175,8 @@ Episode::initActions()
normal_loc, true) ||
!this->checkDRF(atomicLocs[lane], normal_loc,
true, lane)) {
panic("GpuTh %d - Data race detected. STOPPED!\n",
thread->getGpuThreadId());
panic("TestTh %d - Data race detected. STOPPED!\n",
thread->getTesterThreadId());
}
}
@@ -250,13 +250,13 @@ Episode::checkDRF(Location atomic_loc, Location loc, bool isStore,
!action->isMemFenceAction()) {
if (isStore && loc == action->getLocation(lane)) {
warn("ST at location %d races against thread %d\n",
loc, thread->getGpuThreadId());
loc, thread->getTesterThreadId());
return false;
} else if (!isStore &&
action->getType() == Action::Type::STORE &&
loc == action->getLocation(lane)) {
warn("LD at location %d races against thread %d\n",
loc, thread->getGpuThreadId());
loc, thread->getTesterThreadId());
return false;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -39,7 +39,7 @@
#include "cpu/testers/gpu_ruby_test/address_manager.hh"
class ProtocolTester;
class GpuThread;
class TesterThread;
class Episode
{
@@ -74,7 +74,7 @@ class Episode
LocationList locations;
};
Episode(ProtocolTester* tester, GpuThread* thread, int num_loads,
Episode(ProtocolTester* tester, TesterThread* thread, int num_loads,
int num_stores);
~Episode();
@@ -97,7 +97,7 @@ class Episode
private:
// pointers to tester, thread and address amanger structures
ProtocolTester *tester;
GpuThread *thread;
TesterThread *thread;
AddressManager *addrManager;
// a unique episode id

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -36,9 +36,9 @@
#include "debug/ProtocolTest.hh"
GpuWavefront::GpuWavefront(const Params &p)
: GpuThread(p), cuId(p.cu_id)
: TesterThread(p), cuId(p.cu_id)
{
threadName = "GpuWavefront(GpuThread ID = " + std::to_string(threadId) +
threadName = "GpuWavefront(TesterThread ID = " + std::to_string(threadId) +
", CU ID = " + std::to_string(cuId) + ")";
threadEvent.setDesc("GpuWavefront tick");
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -34,11 +34,11 @@
#ifndef CPU_TESTERS_PROTOCOL_TESTER_GPU_WAVEFRONT_HH_
#define CPU_TESTERS_PROTOCOL_TESTER_GPU_WAVEFRONT_HH_
#include "cpu/testers/gpu_ruby_test/gpu_thread.hh"
#include "cpu/testers/gpu_ruby_test/tester_thread.hh"
#include "params/GpuWavefront.hh"
#include "sim/clocked_object.hh"
class GpuWavefront : public GpuThread
class GpuWavefront : public TesterThread
{
public:
typedef GpuWavefrontParams Params;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -39,8 +39,8 @@
#include <random>
#include "cpu/testers/gpu_ruby_test/cpu_thread.hh"
#include "cpu/testers/gpu_ruby_test/gpu_thread.hh"
#include "cpu/testers/gpu_ruby_test/gpu_wavefront.hh"
#include "cpu/testers/gpu_ruby_test/tester_thread.hh"
#include "debug/ProtocolTest.hh"
#include "mem/request.hh"
#include "sim/sim_exit.hh"
@@ -183,7 +183,7 @@ ProtocolTester::init()
// connect cpu threads to cpu's ports
for (int cpu_id = 0; cpu_id < numCpus; ++cpu_id) {
cpuThreads[cpu_id]->attachGpuThreadToPorts(this,
cpuThreads[cpu_id]->attachTesterThreadToPorts(this,
static_cast<SeqPort*>(cpuPorts[cpu_id]));
cpuThreads[cpu_id]->scheduleWakeup();
cpuThreads[cpu_id]->scheduleDeadlockCheckEvent();
@@ -202,7 +202,7 @@ ProtocolTester::init()
for (int i = 0; i < numWfsPerCu; ++i) {
wfId = cu_id * numWfsPerCu + i;
wfs[wfId]->attachGpuThreadToPorts(this,
wfs[wfId]->attachTesterThreadToPorts(this,
static_cast<SeqPort*>(cuVectorPorts[vectorPortId]),
cuTokenPorts[vectorPortId],
static_cast<SeqPort*>(cuSqcPorts[sqcPortId]),
@@ -270,12 +270,12 @@ ProtocolTester::checkDRF(Location atomic_loc,
{
if (debugTester) {
// go through all active episodes in all threads
for (const GpuThread* th : wfs) {
for (const TesterThread* th : wfs) {
if (!th->checkDRF(atomic_loc, loc, isStore))
return false;
}
for (const GpuThread* th : cpuThreads) {
for (const TesterThread* th : cpuThreads) {
if (!th->checkDRF(atomic_loc, loc, isStore))
return false;
}
@@ -314,7 +314,7 @@ ProtocolTester::SeqPort::recvTimingResp(PacketPtr pkt)
// get the requesting thread from the original sender state
ProtocolTester::SenderState* senderState =
safe_cast<ProtocolTester::SenderState*>(pkt->senderState);
GpuThread *th = senderState->th;
TesterThread *th = senderState->th;
th->hitCallback(pkt);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -37,9 +37,9 @@
/*
* The tester includes the main ProtocolTester that manages all ports to the
* memory system.
* GpuThreads are mapped to certain data port(s)
* TesterThreads are mapped to certain data port(s)
*
* GpuThreads inject memory requests through their data ports.
* TesterThreads inject memory requests through their data ports.
* The tester receives and validates responses from the memory.
*
* Main components
@@ -61,7 +61,7 @@
#include "mem/token_port.hh"
#include "params/ProtocolTester.hh"
class GpuThread;
class TesterThread;
class CpuThread;
class GpuWavefront;
@@ -98,8 +98,8 @@ class ProtocolTester : public ClockedObject
struct SenderState : public Packet::SenderState
{
GpuThread* th;
SenderState(GpuThread* _th)
TesterThread* th;
SenderState(TesterThread* _th)
{
assert(_th);
th = _th;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -31,15 +31,15 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include "cpu/testers/gpu_ruby_test/gpu_thread.hh"
#include "cpu/testers/gpu_ruby_test/tester_thread.hh"
#include <fstream>
#include "debug/ProtocolTest.hh"
GpuThread::GpuThread(const Params &p)
TesterThread::TesterThread(const Params &p)
: ClockedObject(p),
threadEvent(this, "GpuThread tick"),
threadEvent(this, "TesterThread tick"),
deadlockCheckEvent(this),
threadId(p.thread_id),
numLanes(p.num_lanes),
@@ -51,7 +51,7 @@ GpuThread::GpuThread(const Params &p)
{
}
GpuThread::~GpuThread()
TesterThread::~TesterThread()
{
for (auto ep : episodeHistory) {
assert(ep != nullptr);
@@ -60,7 +60,7 @@ GpuThread::~GpuThread()
}
void
GpuThread::wakeup()
TesterThread::wakeup()
{
// this thread is waken up by one of the following events
// - hitCallback is called
@@ -108,14 +108,14 @@ GpuThread::wakeup()
}
void
GpuThread::scheduleWakeup()
TesterThread::scheduleWakeup()
{
assert(!threadEvent.scheduled());
schedule(threadEvent, nextCycle());
}
void
GpuThread::scheduleDeadlockCheckEvent()
TesterThread::scheduleDeadlockCheckEvent()
{
// after this first schedule, the deadlock event is scheduled by itself
assert(!deadlockCheckEvent.scheduled());
@@ -123,7 +123,7 @@ GpuThread::scheduleDeadlockCheckEvent()
}
void
GpuThread::attachGpuThreadToPorts(ProtocolTester *_tester,
TesterThread::attachTesterThreadToPorts(ProtocolTester *_tester,
ProtocolTester::SeqPort *_port,
ProtocolTester::GMTokenPort *_tokenPort,
ProtocolTester::SeqPort *_scalarPort,
@@ -141,7 +141,7 @@ GpuThread::attachGpuThreadToPorts(ProtocolTester *_tester,
}
void
GpuThread::issueNewEpisode()
TesterThread::issueNewEpisode()
{
int num_reg_loads = random() % tester->getEpisodeLength();
int num_reg_stores = tester->getEpisodeLength() - num_reg_loads;
@@ -152,7 +152,7 @@ GpuThread::issueNewEpisode()
}
bool
GpuThread::isNextActionReady()
TesterThread::isNextActionReady()
{
if (!curEpisode->hasMoreActions()) {
return false;
@@ -241,7 +241,7 @@ GpuThread::isNextActionReady()
}
void
GpuThread::issueNextAction()
TesterThread::issueNextAction()
{
switch(curAction->getType()) {
case Episode::Action::Type::ATOMIC:
@@ -278,7 +278,7 @@ GpuThread::issueNextAction()
}
void
GpuThread::addOutstandingReqs(OutstandingReqTable& req_table, Addr address,
TesterThread::addOutstandingReqs(OutstandingReqTable& req_table, Addr address,
int lane, Location loc, Value stored_val)
{
OutstandingReqTable::iterator it = req_table.find(address);
@@ -294,8 +294,8 @@ GpuThread::addOutstandingReqs(OutstandingReqTable& req_table, Addr address,
}
}
GpuThread::OutstandingReq
GpuThread::popOutstandingReq(OutstandingReqTable& req_table, Addr addr)
TesterThread::OutstandingReq
TesterThread::popOutstandingReq(OutstandingReqTable& req_table, Addr addr)
{
OutstandingReqTable::iterator it = req_table.find(addr);
@@ -321,7 +321,7 @@ GpuThread::popOutstandingReq(OutstandingReqTable& req_table, Addr addr)
}
void
GpuThread::validateAtomicResp(Location loc, int lane, Value ret_val)
TesterThread::validateAtomicResp(Location loc, int lane, Value ret_val)
{
if (!addrManager->validateAtomicResp(loc, ret_val)) {
std::stringstream ss;
@@ -345,7 +345,7 @@ GpuThread::validateAtomicResp(Location loc, int lane, Value ret_val)
}
void
GpuThread::validateLoadResp(Location loc, int lane, Value ret_val)
TesterThread::validateLoadResp(Location loc, int lane, Value ret_val)
{
if (ret_val != addrManager->getLoggedValue(loc)) {
std::stringstream ss;
@@ -354,7 +354,7 @@ GpuThread::validateLoadResp(Location loc, int lane, Value ret_val)
// basic info
ss << threadName << ": Loaded value is not consistent with "
<< "the last stored value\n"
<< "\tGpuThread " << threadId << "\n"
<< "\tTesterThread " << threadId << "\n"
<< "\tEpisode " << curEpisode->getEpisodeId() << "\n"
<< "\tLane ID " << lane << "\n"
<< "\tAddress " << printAddress(addr) << "\n"
@@ -372,7 +372,7 @@ GpuThread::validateLoadResp(Location loc, int lane, Value ret_val)
}
bool
GpuThread::checkDRF(Location atomic_loc, Location loc, bool isStore) const
TesterThread::checkDRF(Location atomic_loc, Location loc, bool isStore) const
{
if (curEpisode && curEpisode->isEpsActive()) {
// check against the current episode this thread is executing
@@ -383,7 +383,7 @@ GpuThread::checkDRF(Location atomic_loc, Location loc, bool isStore) const
}
void
GpuThread::checkDeadlock()
TesterThread::checkDeadlock()
{
if ((curCycle() - lastActiveCycle) > deadlockThreshold) {
// deadlock detected
@@ -408,7 +408,7 @@ GpuThread::checkDeadlock()
}
void
GpuThread::printOutstandingReqs(const OutstandingReqTable& table,
TesterThread::printOutstandingReqs(const OutstandingReqTable& table,
std::stringstream& ss) const
{
Cycles cur_cycle = curCycle();
@@ -423,7 +423,7 @@ GpuThread::printOutstandingReqs(const OutstandingReqTable& table,
}
void
GpuThread::printAllOutstandingReqs(std::stringstream& ss) const
TesterThread::printAllOutstandingReqs(std::stringstream& ss) const
{
// dump all outstanding requests of this thread
ss << "\t\tOutstanding Loads:\n";

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 Advanced Micro Devices, Inc.
* Copyright (c) 2017-2021 Advanced Micro Devices, Inc.
* All rights reserved.
*
* For use for simulation and test purposes only
@@ -32,11 +32,11 @@
*/
/*
* GPU thread issues requests to and receives responses from Ruby memory
* Tester thread issues requests to and receives responses from Ruby memory
*/
#ifndef CPU_TESTERS_PROTOCOL_TESTER_GPU_THREAD_HH_
#define CPU_TESTERS_PROTOCOL_TESTER_GPU_THREAD_HH_
#ifndef CPU_TESTERS_PROTOCOL_TESTER_TESTER_THREAD_HH_
#define CPU_TESTERS_PROTOCOL_TESTER_TESTER_THREAD_HH_
#include "cpu/testers/gpu_ruby_test/address_manager.hh"
#include "cpu/testers/gpu_ruby_test/episode.hh"
@@ -45,12 +45,12 @@
#include "mem/token_port.hh"
#include "sim/clocked_object.hh"
class GpuThread : public ClockedObject
class TesterThread : public ClockedObject
{
public:
typedef GpuThreadParams Params;
GpuThread(const Params &p);
virtual ~GpuThread();
typedef TesterThreadParams Params;
TesterThread(const Params &p);
virtual ~TesterThread();
typedef AddressManager::Location Location;
typedef AddressManager::Value Value;
@@ -60,7 +60,7 @@ class GpuThread : public ClockedObject
void checkDeadlock();
void scheduleDeadlockCheckEvent();
void attachGpuThreadToPorts(ProtocolTester *_tester,
void attachTesterThreadToPorts(ProtocolTester *_tester,
ProtocolTester::SeqPort *_port,
ProtocolTester::GMTokenPort *_tokenPort = nullptr,
ProtocolTester::SeqPort *_sqcPort = nullptr,
@@ -71,7 +71,7 @@ class GpuThread : public ClockedObject
// must be implemented by a child class
virtual void hitCallback(PacketPtr pkt) = 0;
int getGpuThreadId() const { return threadId; }
int getTesterThreadId() const { return threadId; }
int getNumLanes() const { return numLanes; }
// check if the input location would satisfy DRF constraint
bool checkDRF(Location atomic_loc, Location loc, bool isStore) const;
@@ -79,14 +79,14 @@ class GpuThread : public ClockedObject
void printAllOutstandingReqs(std::stringstream& ss) const;
protected:
class GpuThreadEvent : public Event
class TesterThreadEvent : public Event
{
private:
GpuThread* thread;
TesterThread* thread;
std::string desc;
public:
GpuThreadEvent(GpuThread* _thread, std::string _description)
TesterThreadEvent(TesterThread* _thread, std::string _description)
: Event(CPU_Tick_Pri), thread(_thread), desc(_description)
{}
void setDesc(std::string _description) { desc = _description; }
@@ -94,15 +94,15 @@ class GpuThread : public ClockedObject
const std::string name() const override { return desc; }
};
GpuThreadEvent threadEvent;
TesterThreadEvent threadEvent;
class DeadlockCheckEvent : public Event
{
private:
GpuThread* thread;
TesterThread* thread;
public:
DeadlockCheckEvent(GpuThread* _thread)
DeadlockCheckEvent(TesterThread* _thread)
: Event(CPU_Tick_Pri), thread(_thread)
{}
void process() override { thread->checkDeadlock(); }
@@ -204,4 +204,4 @@ class GpuThread : public ClockedObject
std::stringstream& ss) const;
};
#endif /* CPU_TESTERS_PROTOCOL_TESTER_GPU_THREAD_HH_ */
#endif /* CPU_TESTERS_PROTOCOL_TESTER_TESTER_THREAD_HH_ */