Switch.hh (9230:33eb3c8a98b9) | Switch.hh (9274:ba635023d4bb) |
---|---|
1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 28 unchanged lines hidden (view full) --- 37 */ 38 39#ifndef __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__ 40#define __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__ 41 42#include <iostream> 43#include <vector> 44 | 1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 28 unchanged lines hidden (view full) --- 37 */ 38 39#ifndef __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__ 40#define __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__ 41 42#include <iostream> 43#include <vector> 44 |
45#include "mem/ruby/network/BasicRouter.hh" 46#include "params/Switch.hh" 47 |
|
45class MessageBuffer; 46class PerfectSwitch; 47class NetDest; 48class SimpleNetwork; 49class Throttle; 50 | 48class MessageBuffer; 49class PerfectSwitch; 50class NetDest; 51class SimpleNetwork; 52class Throttle; 53 |
51class Switch | 54class Switch : public BasicRouter |
52{ 53 public: | 55{ 56 public: |
54 Switch(SwitchID sid, SimpleNetwork* network_ptr); | 57 typedef SwitchParams Params; 58 Switch(const Params *p); |
55 ~Switch(); 56 | 59 ~Switch(); 60 |
61 void init(); |
|
57 void addInPort(const std::vector<MessageBuffer*>& in); 58 void addOutPort(const std::vector<MessageBuffer*>& out, 59 const NetDest& routing_table_entry, int link_latency, 60 int bw_multiplier); 61 const Throttle* getThrottle(LinkID link_number) const; 62 const std::vector<Throttle*>* getThrottles() const; 63 void clearRoutingTables(); 64 void clearBuffers(); 65 void reconfigureOutPort(const NetDest& routing_table_entry); 66 67 void printStats(std::ostream& out) const; 68 void clearStats(); 69 void print(std::ostream& out) const; | 62 void addInPort(const std::vector<MessageBuffer*>& in); 63 void addOutPort(const std::vector<MessageBuffer*>& out, 64 const NetDest& routing_table_entry, int link_latency, 65 int bw_multiplier); 66 const Throttle* getThrottle(LinkID link_number) const; 67 const std::vector<Throttle*>* getThrottles() const; 68 void clearRoutingTables(); 69 void clearBuffers(); 70 void reconfigureOutPort(const NetDest& routing_table_entry); 71 72 void printStats(std::ostream& out) const; 73 void clearStats(); 74 void print(std::ostream& out) const; |
75 void init_net_ptr(SimpleNetwork* net_ptr) { m_network_ptr = net_ptr; } |
|
70 71 private: 72 // Private copy constructor and assignment operator 73 Switch(const Switch& obj); 74 Switch& operator=(const Switch& obj); 75 76 PerfectSwitch* m_perfect_switch_ptr; 77 SimpleNetwork* m_network_ptr; 78 std::vector<Throttle*> m_throttles; 79 std::vector<MessageBuffer*> m_buffers_to_free; | 76 77 private: 78 // Private copy constructor and assignment operator 79 Switch(const Switch& obj); 80 Switch& operator=(const Switch& obj); 81 82 PerfectSwitch* m_perfect_switch_ptr; 83 SimpleNetwork* m_network_ptr; 84 std::vector<Throttle*> m_throttles; 85 std::vector<MessageBuffer*> m_buffers_to_free; |
80 SwitchID m_switch_id; | |
81}; 82 83inline std::ostream& 84operator<<(std::ostream& out, const Switch& obj) 85{ 86 obj.print(out); 87 out << std::flush; 88 return out; 89} 90 91#endif // __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__ | 86}; 87 88inline std::ostream& 89operator<<(std::ostream& out, const Switch& obj) 90{ 91 obj.print(out); 92 out << std::flush; 93 return out; 94} 95 96#endif // __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__ |