From 7bd57d5a94acbdcb64b4927ea6a673cae18adcc0 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 9 Oct 2019 17:47:19 -0700 Subject: cpu: Create a PCEventScope class to abstract the scope of PCEvents. This abstraction will allow scheduling PCEvents for a particular ThreadContext, all contexts on a CPU, all contexts in a system, etc., and delegates scheduling and removing events to each particular scope. Right now the PCEventQueue is the only implementor of the PCEventSCope interface. Change-Id: I8fb62931511136229915c2e19d36aae7ffdec9df Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22099 Reviewed-by: Andreas Sandberg Maintainer: Andreas Sandberg Tested-by: kokoro --- src/kern/freebsd/events.hh | 4 ++-- src/kern/linux/events.hh | 16 ++++++++-------- src/kern/system_events.hh | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src/kern') diff --git a/src/kern/freebsd/events.hh b/src/kern/freebsd/events.hh index 1d3faa935..ebee3e084 100644 --- a/src/kern/freebsd/events.hh +++ b/src/kern/freebsd/events.hh @@ -57,9 +57,9 @@ class UDelayEvent : public SkipFuncEvent uint64_t argMultToNs; public: - UDelayEvent(PCEventQueue *q, const std::string &desc, Addr addr, + UDelayEvent(PCEventScope *s, const std::string &desc, Addr addr, uint64_t mult, uint64_t div) - : SkipFuncEvent(q, desc, addr), argDivToNs(div), argMultToNs(mult) {} + : SkipFuncEvent(s, desc, addr), argDivToNs(div), argMultToNs(mult) {} virtual void process(ThreadContext *xc); }; diff --git a/src/kern/linux/events.hh b/src/kern/linux/events.hh index b8aad9d79..d4c77bf68 100644 --- a/src/kern/linux/events.hh +++ b/src/kern/linux/events.hh @@ -51,8 +51,8 @@ namespace Linux { class DebugPrintkEvent : public SkipFuncEvent { public: - DebugPrintkEvent(PCEventQueue *q, const std::string &desc, Addr addr) - : SkipFuncEvent(q, desc, addr) {} + DebugPrintkEvent(PCEventScope *s, const std::string &desc, Addr addr) + : SkipFuncEvent(s, desc, addr) {} virtual void process(ThreadContext *xc); }; @@ -70,9 +70,9 @@ class DmesgDumpEvent : public PCEvent std::string fname; public: - DmesgDumpEvent(PCEventQueue *q, const std::string &desc, Addr addr, + DmesgDumpEvent(PCEventScope *s, const std::string &desc, Addr addr, const std::string &_fname) - : PCEvent(q, desc, addr), fname(_fname) {} + : PCEvent(s, desc, addr), fname(_fname) {} virtual void process(ThreadContext *xc); }; @@ -90,9 +90,9 @@ class KernelPanicEvent : public PCEvent std::string fname; public: - KernelPanicEvent(PCEventQueue *q, const std::string &desc, Addr addr, + KernelPanicEvent(PCEventScope *s, const std::string &desc, Addr addr, const std::string &_fname) - : PCEvent(q, desc, addr), fname(_fname) {} + : PCEvent(s, desc, addr), fname(_fname) {} virtual void process(ThreadContext *xc); }; @@ -116,9 +116,9 @@ class UDelayEvent : public SkipFuncEvent uint64_t argMultToNs; public: - UDelayEvent(PCEventQueue *q, const std::string &desc, Addr addr, + UDelayEvent(PCEventScope *s, const std::string &desc, Addr addr, uint64_t mult, uint64_t div) - : SkipFuncEvent(q, desc, addr), argDivToNs(div), argMultToNs(mult) {} + : SkipFuncEvent(s, desc, addr), argDivToNs(div), argMultToNs(mult) {} virtual void process(ThreadContext *xc); }; diff --git a/src/kern/system_events.hh b/src/kern/system_events.hh index 58cbc4808..967443937 100644 --- a/src/kern/system_events.hh +++ b/src/kern/system_events.hh @@ -38,8 +38,8 @@ class SkipFuncEvent : public PCEvent { public: - SkipFuncEvent(PCEventQueue *q, const std::string &desc, Addr addr) - : PCEvent(q, desc, addr) + SkipFuncEvent(PCEventScope *s, const std::string &desc, Addr addr) + : PCEvent(s, desc, addr) {} virtual void process(ThreadContext *tc); }; -- cgit v1.2.3