ruby: Renamed Ruby's EventQueue to RubyEventQueue
--HG-- rename : src/mem/ruby/eventqueue/EventQueue.cc => src/mem/ruby/eventqueue/RubyEventQueue.cc rename : src/mem/ruby/eventqueue/EventQueue.hh => src/mem/ruby/eventqueue/RubyEventQueue.hh rename : src/mem/ruby/eventqueue/EventQueueNode.cc => src/mem/ruby/eventqueue/RubyEventQueueNode.cc rename : src/mem/ruby/eventqueue/EventQueueNode.hh => src/mem/ruby/eventqueue/RubyEventQueueNode.hh
This commit is contained in:
@@ -41,7 +41,7 @@
|
||||
#include "Global.hh"
|
||||
#include "MessageBufferNode.hh"
|
||||
#include "Consumer.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "Message.hh"
|
||||
#include "PrioHeap.hh"
|
||||
#include "util.hh"
|
||||
|
||||
@@ -27,15 +27,6 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* EventQueueNode.C
|
||||
*
|
||||
* Description: See EventQueueNode.h
|
||||
*
|
||||
* $Id: MessageBufferNode.C,v 3.1 2001/02/02 16:57:54 sorin Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include "MessageBufferNode.hh"
|
||||
|
||||
void MessageBufferNode::print(ostream& out) const
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#define CONSUMER_H
|
||||
|
||||
#include "Global.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
|
||||
class MessageBuffer;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#include "Global.hh"
|
||||
#include "Debug.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
|
||||
class Debug;
|
||||
extern Debug* g_debug_ptr;
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
#include "Global.hh"
|
||||
|
||||
EventQueue* g_eventQueue_ptr = NULL;
|
||||
RubyEventQueue* g_eventQueue_ptr = NULL;
|
||||
RubySystem* g_system_ptr = NULL;
|
||||
Debug* g_debug_ptr = NULL;
|
||||
|
||||
|
||||
@@ -89,8 +89,8 @@ typedef unsigned int uint;
|
||||
typedef int SwitchID;
|
||||
typedef int LinkID;
|
||||
|
||||
class EventQueue;
|
||||
extern EventQueue* g_eventQueue_ptr;
|
||||
class RubyEventQueue;
|
||||
extern RubyEventQueue* g_eventQueue_ptr;
|
||||
|
||||
class RubySystem;
|
||||
extern RubySystem* g_system_ptr;
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "EventQueue.hh"
|
||||
#include "Consumer.hh"
|
||||
|
||||
//static int global_counter = 0;
|
||||
|
||||
class TestConsumer1 : public Consumer {
|
||||
public:
|
||||
TestConsumer1(int description) { m_description = description; }
|
||||
~TestConsumer1() { }
|
||||
void wakeup() { cout << "Wakeup#1: " << m_description << endl; }
|
||||
// void wakeup() { global_counter++; }
|
||||
void print(ostream& out) const { out << "1:" << m_description << endl; }
|
||||
|
||||
private:
|
||||
int m_description;
|
||||
};
|
||||
|
||||
class TestConsumer2 : public Consumer {
|
||||
public:
|
||||
TestConsumer2(int description) { m_description = description; }
|
||||
~TestConsumer2() { }
|
||||
void wakeup() { cout << "Wakeup#2: " << m_description << endl; }
|
||||
// void wakeup() { global_counter++; }
|
||||
void print(ostream& out) const { out << "2:" << m_description << endl; }
|
||||
private:
|
||||
int m_description;
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
EventQueue q;
|
||||
const int SIZE = 200;
|
||||
const int MAX_TIME = 10000;
|
||||
int numbers[SIZE];
|
||||
Consumer* consumers[SIZE];
|
||||
|
||||
for (int i=0; i<SIZE; i++) {
|
||||
numbers[i] = random() % MAX_TIME;
|
||||
if (i%2 == 0) {
|
||||
consumers[i] = new TestConsumer1(i);
|
||||
} else {
|
||||
consumers[i] = new TestConsumer2(i);
|
||||
}
|
||||
}
|
||||
|
||||
for(int i=0; i<SIZE; i++) {
|
||||
q.scheduleEvent(consumers[i], numbers[i]);
|
||||
}
|
||||
|
||||
q.triggerEvents(MAX_TIME);
|
||||
|
||||
for (int i=0; i<SIZE; i++) {
|
||||
delete consumers[i];
|
||||
}
|
||||
}
|
||||
@@ -31,48 +31,48 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "RubyConfig.hh"
|
||||
#include "Consumer.hh"
|
||||
#include "Profiler.hh"
|
||||
#include "System.hh"
|
||||
#include "PrioHeap.hh"
|
||||
#include "EventQueueNode.hh"
|
||||
#include "RubyEventQueueNode.hh"
|
||||
|
||||
// Class public method definitions
|
||||
|
||||
EventQueue::EventQueue()
|
||||
RubyEventQueue::RubyEventQueue()
|
||||
{
|
||||
m_prio_heap_ptr = NULL;
|
||||
init();
|
||||
}
|
||||
|
||||
EventQueue::~EventQueue()
|
||||
RubyEventQueue::~RubyEventQueue()
|
||||
{
|
||||
delete m_prio_heap_ptr;
|
||||
}
|
||||
|
||||
void EventQueue::init()
|
||||
void RubyEventQueue::init()
|
||||
{
|
||||
m_globalTime = 1;
|
||||
m_timeOfLastRecovery = 1;
|
||||
m_prio_heap_ptr = new PrioHeap<EventQueueNode>;
|
||||
m_prio_heap_ptr = new PrioHeap<RubyEventQueueNode>;
|
||||
m_prio_heap_ptr->init();
|
||||
}
|
||||
|
||||
bool EventQueue::isEmpty() const
|
||||
bool RubyEventQueue::isEmpty() const
|
||||
{
|
||||
return (m_prio_heap_ptr->size() == 0);
|
||||
}
|
||||
|
||||
void EventQueue::scheduleEventAbsolute(Consumer* consumer, Time timeAbs)
|
||||
void RubyEventQueue::scheduleEventAbsolute(Consumer* consumer, Time timeAbs)
|
||||
{
|
||||
// Check to see if this is a redundant wakeup
|
||||
// Time time = timeDelta + m_globalTime;
|
||||
ASSERT(consumer != NULL);
|
||||
if (consumer->getLastScheduledWakeup() != timeAbs) {
|
||||
// This wakeup is not redundant
|
||||
EventQueueNode thisNode;
|
||||
RubyEventQueueNode thisNode;
|
||||
thisNode.m_consumer_ptr = consumer;
|
||||
assert(timeAbs > m_globalTime);
|
||||
thisNode.m_time = timeAbs;
|
||||
@@ -81,9 +81,9 @@ void EventQueue::scheduleEventAbsolute(Consumer* consumer, Time timeAbs)
|
||||
}
|
||||
}
|
||||
|
||||
void EventQueue::triggerEvents(Time t)
|
||||
void RubyEventQueue::triggerEvents(Time t)
|
||||
{
|
||||
EventQueueNode thisNode;
|
||||
RubyEventQueueNode thisNode;
|
||||
|
||||
while(m_prio_heap_ptr->size() > 0 && m_prio_heap_ptr->peekMin().m_time <= t) {
|
||||
m_globalTime = m_prio_heap_ptr->peekMin().m_time;
|
||||
@@ -96,10 +96,10 @@ void EventQueue::triggerEvents(Time t)
|
||||
m_globalTime = t;
|
||||
}
|
||||
|
||||
void EventQueue::triggerAllEvents()
|
||||
void RubyEventQueue::triggerAllEvents()
|
||||
{
|
||||
// FIXME - avoid repeated code
|
||||
EventQueueNode thisNode;
|
||||
RubyEventQueueNode thisNode;
|
||||
|
||||
while(m_prio_heap_ptr->size() > 0) {
|
||||
m_globalTime = m_prio_heap_ptr->peekMin().m_time;
|
||||
@@ -114,7 +114,7 @@ void EventQueue::triggerAllEvents()
|
||||
// Class private method definitions
|
||||
|
||||
void
|
||||
EventQueue::print(ostream& out) const
|
||||
RubyEventQueue::print(ostream& out) const
|
||||
{
|
||||
out << "[Event Queue: " << *m_prio_heap_ptr << "]";
|
||||
}
|
||||
@@ -56,23 +56,23 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EVENTQUEUE_H
|
||||
#define EVENTQUEUE_H
|
||||
#ifndef RUBYEVENTQUEUE_H
|
||||
#define RUBYEVENTQUEUE_H
|
||||
|
||||
#include "Global.hh"
|
||||
#include "Vector.hh"
|
||||
|
||||
class Consumer;
|
||||
template <class TYPE> class PrioHeap;
|
||||
class EventQueueNode;
|
||||
class RubyEventQueueNode;
|
||||
|
||||
class EventQueue {
|
||||
class RubyEventQueue {
|
||||
public:
|
||||
// Constructors
|
||||
EventQueue();
|
||||
RubyEventQueue();
|
||||
|
||||
// Destructor
|
||||
~EventQueue();
|
||||
~RubyEventQueue();
|
||||
|
||||
// Public Methods
|
||||
|
||||
@@ -91,24 +91,24 @@ public:
|
||||
private:
|
||||
// Private copy constructor and assignment operator
|
||||
void init();
|
||||
EventQueue(const EventQueue& obj);
|
||||
EventQueue& operator=(const EventQueue& obj);
|
||||
RubyEventQueue(const RubyEventQueue& obj);
|
||||
RubyEventQueue& operator=(const RubyEventQueue& obj);
|
||||
|
||||
// Data Members (m_ prefix)
|
||||
PrioHeap<EventQueueNode>* m_prio_heap_ptr;
|
||||
PrioHeap<RubyEventQueueNode>* m_prio_heap_ptr;
|
||||
Time m_globalTime;
|
||||
Time m_timeOfLastRecovery;
|
||||
};
|
||||
|
||||
// Output operator declaration
|
||||
inline extern
|
||||
ostream& operator<<(ostream& out, const EventQueue& obj);
|
||||
ostream& operator<<(ostream& out, const RubyEventQueue& obj);
|
||||
|
||||
// ******************* Definitions *******************
|
||||
|
||||
// Output operator definition
|
||||
inline extern
|
||||
ostream& operator<<(ostream& out, const EventQueue& obj)
|
||||
ostream& operator<<(ostream& out, const RubyEventQueue& obj)
|
||||
{
|
||||
obj.print(out);
|
||||
out << flush;
|
||||
@@ -32,9 +32,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "EventQueueNode.hh"
|
||||
#include "RubyEventQueueNode.hh"
|
||||
|
||||
void EventQueueNode::print(ostream& out) const
|
||||
void RubyEventQueueNode::print(ostream& out) const
|
||||
{
|
||||
out << "[";
|
||||
out << "Time=" << m_time;
|
||||
@@ -32,32 +32,32 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EVENTQUEUENODE_H
|
||||
#define EVENTQUEUENODE_H
|
||||
#ifndef RUBYEVENTQUEUENODE_H
|
||||
#define RUBYEVENTQUEUENODE_H
|
||||
|
||||
#include "Global.hh"
|
||||
class Consumer;
|
||||
|
||||
class EventQueueNode {
|
||||
class RubyEventQueueNode {
|
||||
public:
|
||||
// Constructors
|
||||
EventQueueNode() { m_time = 0; m_consumer_ptr = NULL; }
|
||||
RubyEventQueueNode() { m_time = 0; m_consumer_ptr = NULL; }
|
||||
|
||||
// Destructor
|
||||
//~EventQueueNode();
|
||||
//~RubyEventQueueNode();
|
||||
|
||||
// Public Methods
|
||||
void print(ostream& out) const;
|
||||
|
||||
// Assignment operator and copy constructor since the default
|
||||
// constructors confuse purify when long longs are present.
|
||||
EventQueueNode& operator=(const EventQueueNode& obj) {
|
||||
RubyEventQueueNode& operator=(const RubyEventQueueNode& obj) {
|
||||
m_time = obj.m_time;
|
||||
m_consumer_ptr = obj.m_consumer_ptr;
|
||||
return *this;
|
||||
}
|
||||
|
||||
EventQueueNode(const EventQueueNode& obj) {
|
||||
RubyEventQueueNode(const RubyEventQueueNode& obj) {
|
||||
m_time = obj.m_time;
|
||||
m_consumer_ptr = obj.m_consumer_ptr;
|
||||
}
|
||||
@@ -65,7 +65,7 @@ private:
|
||||
// Private Methods
|
||||
|
||||
// Default copy constructor and assignment operator
|
||||
// EventQueueNode(const EventQueueNode& obj);
|
||||
// RubyEventQueueNode(const RubyEventQueueNode& obj);
|
||||
|
||||
// Data Members (m_ prefix)
|
||||
public:
|
||||
@@ -74,21 +74,21 @@ public:
|
||||
};
|
||||
|
||||
// Output operator declaration
|
||||
ostream& operator<<(ostream& out, const EventQueueNode& obj);
|
||||
ostream& operator<<(ostream& out, const RubyEventQueueNode& obj);
|
||||
|
||||
// ******************* Definitions *******************
|
||||
|
||||
inline extern bool node_less_then_eq(const EventQueueNode& n1, const EventQueueNode& n2);
|
||||
inline extern bool node_less_then_eq(const RubyEventQueueNode& n1, const RubyEventQueueNode& n2);
|
||||
|
||||
inline extern
|
||||
bool node_less_then_eq(const EventQueueNode& n1, const EventQueueNode& n2)
|
||||
bool node_less_then_eq(const RubyEventQueueNode& n1, const RubyEventQueueNode& n2)
|
||||
{
|
||||
return (n1.m_time <= n2.m_time);
|
||||
}
|
||||
|
||||
// Output operator definition
|
||||
extern inline
|
||||
ostream& operator<<(ostream& out, const EventQueueNode& obj)
|
||||
ostream& operator<<(ostream& out, const RubyEventQueueNode& obj)
|
||||
{
|
||||
obj.print(out);
|
||||
out << flush;
|
||||
@@ -37,7 +37,7 @@
|
||||
*/
|
||||
|
||||
#include "Global.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "System.hh"
|
||||
#include "Debug.hh"
|
||||
#include "Profiler.hh"
|
||||
@@ -213,7 +213,7 @@ void init_simulator()
|
||||
DEBUG_OUTPUT_FILENAME );
|
||||
|
||||
cout << "Creating event queue..." << endl;
|
||||
g_eventQueue_ptr = new EventQueue;
|
||||
g_eventQueue_ptr = new RubyEventQueue;
|
||||
cout << "Creating event queue done" << endl;
|
||||
|
||||
cout << "Creating system..." << endl;
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
#include "OutVcState_d.hh"
|
||||
#include "NetworkConfig.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
|
||||
OutVcState_d::OutVcState_d(int id)
|
||||
{
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
*/
|
||||
|
||||
#include "StoreTrace.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
|
||||
bool StoreTrace::s_init = false; // Total number of store lifetimes of all lines
|
||||
int64 StoreTrace::s_total_samples = 0; // Total number of store lifetimes of all lines
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
#include "CacheRecorder.hh"
|
||||
#include "TraceRecord.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "PrioHeap.hh"
|
||||
#include "gzstream.hh"
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
#include "Tracer.hh"
|
||||
#include "TraceRecord.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "PrioHeap.hh"
|
||||
#include "System.hh"
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "Global.hh"
|
||||
#include "System.hh"
|
||||
#include "OpalInterface.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "mf_api.hh"
|
||||
#include "interface.hh"
|
||||
#include "Sequencer.hh"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#include "Global.hh"
|
||||
#include "RefCnt.hh"
|
||||
#include "RefCountable.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
|
||||
class Message;
|
||||
typedef RefCnt<Message> MsgPtr;
|
||||
|
||||
@@ -17,17 +17,12 @@
|
||||
* */
|
||||
|
||||
/*
|
||||
* EventQueueNode.h
|
||||
*
|
||||
* Description:
|
||||
* This structure records everything known about a single
|
||||
* memory request that is queued in the memory controller.
|
||||
* It is created when the memory request first arrives
|
||||
* at a memory controller and is deleted when the underlying
|
||||
* message is enqueued to be sent back to the directory.
|
||||
*
|
||||
* $Id: MemoryNode.h,v 3.3 2003/12/04 15:01:34 xu Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MEMORYNODE_H
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#include "System.hh"
|
||||
#include "Driver.hh"
|
||||
#include "Vector.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "AddressProfiler.hh"
|
||||
#include "Sequencer.hh"
|
||||
#include "SubBlock.hh"
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
#include "Global.hh"
|
||||
#include "TimerTable.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
|
||||
TimerTable::TimerTable(Chip* chip_ptr)
|
||||
{
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "Global.hh"
|
||||
#include "System.hh"
|
||||
#include "DeterministicDriver.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "SpecifiedGenerator.hh"
|
||||
#include "DetermGETXGenerator.hh"
|
||||
#include "DetermInvGenerator.hh"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "Global.hh"
|
||||
#include "System.hh"
|
||||
#include "RaceyDriver.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "RaceyPseudoThread.hh"
|
||||
#include "SubBlock.hh"
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "Global.hh"
|
||||
#include "System.hh"
|
||||
#include "SyntheticDriver.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
//#ifndef XACT_MEM
|
||||
#include "RequestGenerator.hh"
|
||||
//#endif
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "Global.hh"
|
||||
#include "System.hh"
|
||||
#include "Tester.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "SubBlock.hh"
|
||||
#include "Check.hh"
|
||||
#include "Chip.hh"
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
*/
|
||||
|
||||
#include "main.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "RubyConfig.hh"
|
||||
#include "test_framework.hh"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#include "OpalInterface.hh"
|
||||
#include "init.hh"
|
||||
#include "Tester.hh"
|
||||
#include "EventQueue.hh"
|
||||
#include "RubyEventQueue.hh"
|
||||
#include "getopt.hh"
|
||||
#include "Network.hh"
|
||||
#include "CacheRecorder.hh"
|
||||
|
||||
Reference in New Issue
Block a user