1/* 2 * Copyright (c) 2010 Advanced Micro Devices, Inc. 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; --- 58 unchanged lines hidden (view full) --- 67 void setConsumer(Consumer* consumer_ptr) 68 { 69 m_consumer_ptr = consumer_ptr; 70 } 71 Consumer* getConsumer() { return m_consumer_ptr; }; 72 void setDescription(const std::string& name) { m_description = name; }; 73 std::string getDescription() { return m_description; }; 74 |
75 void enqueue(MsgPtr message, Tick current_time, Tick delta); 76 void dequeue(Tick current_time); |
77 const Message* peek(); |
78 void recycle(Tick current_time, Tick recycle_latency); 79 bool isReady(Tick current_time); 80 // infinite queue length 81 bool areNSlotsAvailable(int n, Tick current_time) { return true; }; |
82 83 void print(std::ostream& out) const; 84 uint64_t m_msg_counter; 85 86 private: 87 // Private copy constructor and assignment operator 88 WireBuffer (const WireBuffer& obj); 89 WireBuffer& operator=(const WireBuffer& obj); 90 91 // data members 92 Consumer* m_consumer_ptr; // Consumer to signal a wakeup() 93 std::string m_description; 94 95 // queues where memory requests live 96 std::vector<MsgPtr> m_message_queue; |
97}; 98 99std::ostream& operator<<(std::ostream& out, const WireBuffer& obj); 100 101#endif // __MEM_RUBY_STRUCTURES_WireBuffer_HH__ |