added networking components, hosts are next
This commit is contained in:
39
src/network/switch/shared_buffer.h
Normal file
39
src/network/switch/shared_buffer.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef NETWORK_SWITCH_SHARED_BUFFER_H
|
||||
#define NETWORK_SWITCH_SHARED_BUFFER_H
|
||||
|
||||
#include "network/switch/switch_buffer.h"
|
||||
|
||||
namespace dofs {
|
||||
|
||||
// SharedBuffer: a single global memory pool shared by all ports.
|
||||
// Only guard is the total pool (_buffer_bytes). Per-port usage tracked for stats.
|
||||
class SharedBuffer : public SwitchBuffer {
|
||||
public:
|
||||
SharedBuffer(Simulator* const sim,
|
||||
NetworkSwitch* const owner,
|
||||
Bytes total_bytes,
|
||||
uint16_t ports);
|
||||
|
||||
virtual bool enqueue_packet(const Packet& pkt, PortId egress,
|
||||
FlowPriority prio) override;
|
||||
virtual bool drain_one(PortId port) override;
|
||||
|
||||
protected:
|
||||
virtual std::array<std::deque<Queued>, PRI_COUNT> &queues_for(
|
||||
PortId p) override;
|
||||
virtual const std::array<std::deque<Queued>, PRI_COUNT> &queues_for(
|
||||
PortId p) const override;
|
||||
|
||||
virtual bool on_enqueue_cap_check(PortId port, Bytes sz) override;
|
||||
virtual void on_enqueue_commit(PortId port, Bytes sz) override;
|
||||
virtual void on_dequeue_commit(PortId port, Bytes sz) override;
|
||||
|
||||
private:
|
||||
// Per-port, per-priority queues
|
||||
std::vector<std::array<std::deque<Queued>, PRI_COUNT >> _per_port_queues;
|
||||
Bytes _used_total;
|
||||
};
|
||||
|
||||
} // namespace dofs
|
||||
|
||||
#endif // NETWORK_SWITCH_SHARED_BUFFER_H
|
||||
Reference in New Issue
Block a user