gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
TCPIface Class Reference

#include <tcp_iface.hh>

Inheritance diagram for TCPIface:
DistIface Drainable Serializable

Classes

struct  NodeInfo
 Compute node info and storage for the very first connection from each node (used by the switch) More...
 

Public Member Functions

 TCPIface (std::string server_name, unsigned server_port, unsigned dist_rank, unsigned dist_size, Tick sync_start, Tick sync_repeat, EventManager *em, bool use_pseudo_op, bool is_switch, int num_nodes)
 The ctor creates and connects the stream socket to the server. More...
 
 ~TCPIface () override
 
- Public Member Functions inherited from DistIface
 DistIface (unsigned dist_rank, unsigned dist_size, Tick sync_start, Tick sync_repeat, EventManager *em, bool use_pseudo_op, bool is_switch, int num_nodes)
 ctor More...
 
virtual ~DistIface ()
 
void packetOut (EthPacketPtr pkt, Tick send_delay)
 Send out an Ethernet packet. More...
 
EthPacketPtr packetIn ()
 Fetch the packet scheduled to be received next by the simulated network link. More...
 
DrainState drain () override
 Notify an object that it needs to drain its state. More...
 
void drainResume () override
 Resume execution after a successful drain. More...
 
void init (const Event *e, Tick link_delay)
 
void startup ()
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Public Member Functions inherited from Drainable
DrainState drainState () const
 Return the current drain state of an object. More...
 
virtual void notifyFork ()
 Notify a child process of a fork. More...
 
- Public Member Functions inherited from Serializable
 Serializable ()
 
virtual ~Serializable ()
 
void serializeSection (CheckpointOut &cp, const char *name) const
 Serialize an object into a new section. More...
 
void serializeSection (CheckpointOut &cp, const std::string &name) const
 
void unserializeSection (CheckpointIn &cp, const char *name)
 Unserialize an a child object. More...
 
void unserializeSection (CheckpointIn &cp, const std::string &name)
 

Protected Member Functions

void sendPacket (const Header &header, const EthPacketPtr &packet) override
 Send out a data packet to the remote end. More...
 
void sendCmd (const Header &header) override
 Send out a control command to the remote end. More...
 
bool recvHeader (Header &header) override
 Receive a header (i.e. More...
 
void recvPacket (const Header &header, EthPacketPtr &packet) override
 Receive a packet from the remote end. More...
 
void initTransport () override
 Init hook for the underlaying transport. More...
 
- Protected Member Functions inherited from Drainable
 Drainable ()
 
virtual ~Drainable ()
 
void signalDrainDone () const
 Signal that an object is drained. More...
 

Private Member Functions

void sendTCP (int sock, const void *buf, unsigned length)
 Send out a message through a TCP stream socket. More...
 
bool recvTCP (int sock, void *buf, unsigned length)
 Receive the next incoming message through a TCP stream socket. More...
 
bool listen (int port)
 
void accept ()
 
void connect ()
 
int getfdStatic () const
 
bool islistening () const
 
bool anyislistening () const
 
void establishConnection ()
 

Private Attributes

int sock
 The stream socket to connect to the server. More...
 
std::string serverName
 
int serverPort
 
bool isSwitch
 
bool listening
 

Static Private Attributes

static bool anyListening = false
 
static int fdStatic = -1
 
static std::vector< std::pair
< NodeInfo, int > > 
nodes
 
static std::vector< int > sockRegistry
 Storage for all opened sockets. More...
 

Additional Inherited Members

- Public Types inherited from DistIface
typedef DistHeaderPkt::Header Header
 
- Static Public Member Functions inherited from DistIface
static bool readyToExit (Tick delay)
 Initiate the exit from the simulation. More...
 
static bool readyToCkpt (Tick delay, Tick period)
 Initiate taking a checkpoint. More...
 
static uint64_t rankParam ()
 Getter for the dist rank param. More...
 
static uint64_t sizeParam ()
 Getter for the dist size param. More...
 
static void toggleSync (ThreadContext *tc)
 Trigger the master to start/stop synchronization. More...
 
- Static Public Member Functions inherited from Serializable
static const std::string & currentSection ()
 Get the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 
static void unserializeGlobals (CheckpointIn &cp)
 
- Static Public Attributes inherited from Serializable
static int ckptCount = 0
 
static int ckptMaxCount = 0
 
static int ckptPrevCount = -1
 
- Protected Types inherited from DistIface
typedef DistHeaderPkt::MsgType MsgType
 
typedef DistHeaderPkt::ReqType ReqType
 
- Protected Attributes inherited from DistIface
unsigned rank
 The rank of this process among the gem5 peers. More...
 
unsigned size
 The number of gem5 processes comprising this dist simulation. More...
 
unsigned distIfaceId
 Unique id for the dist link. More...
 
bool isMaster
 
- Static Protected Attributes inherited from DistIface
static unsigned distIfaceNum = 0
 Number of DistIface objects (i.e. More...
 

Detailed Description

Definition at line 62 of file tcp_iface.hh.

Constructor & Destructor Documentation

TCPIface::TCPIface ( std::string  server_name,
unsigned  server_port,
unsigned  dist_rank,
unsigned  dist_size,
Tick  sync_start,
Tick  sync_repeat,
EventManager em,
bool  use_pseudo_op,
bool  is_switch,
int  num_nodes 
)

The ctor creates and connects the stream socket to the server.

Parameters
server_nameThe name (or IP address) of the host running the server process.
server_portThe port number the server listening for new connections.
sync_startThe tick for the first dist synchronisation.
sync_repeatThe frequency of dist synchronisation.
emThe EventManager object associated with the simulated Ethernet link.

Definition at line 82 of file tcp_iface.cc.

References accept(), DPRINTF, ArmISA::i, inform, DistIface::isMaster, listen(), PowerISA::ni, nodes, panic, recvTCP(), serverPort, DistIface::size, and sock.

TCPIface::~TCPIface ( )
override

Definition at line 255 of file tcp_iface.cc.

References M5_VAR_USED, and sock.

Member Function Documentation

void TCPIface::accept ( )
private

Definition at line 208 of file tcp_iface.cc.

References fdStatic, ArmISA::i, sock, and warn.

Referenced by establishConnection(), and TCPIface().

bool TCPIface::anyislistening ( ) const
inlineprivate

Definition at line 120 of file tcp_iface.hh.

References anyListening.

void TCPIface::connect ( )
private

Definition at line 222 of file tcp_iface.cc.

References DPRINTF, panic_if(), serverName, serverPort, sock, and warn.

Referenced by establishConnection().

void TCPIface::establishConnection ( )
private
int TCPIface::getfdStatic ( ) const
inlineprivate

Definition at line 118 of file tcp_iface.hh.

References fdStatic.

void TCPIface::initTransport ( )
overrideprotectedvirtual

Init hook for the underlaying transport.

Implements DistIface.

Definition at line 338 of file tcp_iface.cc.

References establishConnection().

bool TCPIface::islistening ( ) const
inlineprivate

Definition at line 119 of file tcp_iface.hh.

References listening.

bool TCPIface::listen ( int  port)
private

Definition at line 115 of file tcp_iface.cc.

References anyListening, fdStatic, listening, panic, and panic_if().

Referenced by TCPIface().

bool TCPIface::recvHeader ( Header header)
overrideprotectedvirtual

Receive a header (i.e.

meta info describing a data packet or a control command) from the remote end.

Parameters
headerThe meta info structure to store the incoming header.

Implements DistIface.

Definition at line 319 of file tcp_iface.cc.

References DPRINTF, DistHeaderPkt::Header::msgType, recvTCP(), and sock.

void TCPIface::recvPacket ( const Header header,
EthPacketPtr packet 
)
overrideprotectedvirtual

Receive a packet from the remote end.

Parameters
headerMeta info about the incoming packet (obtanied by a previous call to the recvHedaer() method).
Pointerto packet received.

Implements DistIface.

Definition at line 328 of file tcp_iface.cc.

References DistHeaderPkt::Header::dataPacketLength, panic_if(), recvTCP(), DistHeaderPkt::Header::simLength, and sock.

bool TCPIface::recvTCP ( int  sock,
void *  buf,
unsigned  length 
)
private

Receive the next incoming message through a TCP stream socket.

Parameters
sockTCP stream socket.
bufStart address of buffer to store the message.
lengthExact size of the expected message in bytes.

Definition at line 281 of file tcp_iface.cc.

References inform, and panic.

Referenced by establishConnection(), recvHeader(), recvPacket(), and TCPIface().

void TCPIface::sendCmd ( const Header header)
overrideprotectedvirtual

Send out a control command to the remote end.

Parameters
headerMeta info describing the command (e.g. sync request)

Implements DistIface.

Definition at line 307 of file tcp_iface.cc.

References DPRINTF, DistHeaderPkt::Header::msgType, ArmISA::s, sendTCP(), and sockRegistry.

void TCPIface::sendPacket ( const Header header,
const EthPacketPtr packet 
)
overrideprotectedvirtual

Send out a data packet to the remote end.

Parameters
headerMeta info about the packet (which needs to be transferred to the destination alongside the packet).
packetPointer to the packet to send.

Implements DistIface.

Definition at line 300 of file tcp_iface.cc.

References sendTCP(), and sock.

void TCPIface::sendTCP ( int  sock,
const void *  buf,
unsigned  length 
)
private

Send out a message through a TCP stream socket.

Parameters
sockTCP stream socket.
bufStart address of the message.
lengthSize of the message in bytes.

Definition at line 264 of file tcp_iface.cc.

References exitSimLoop(), panic, and panic_if().

Referenced by establishConnection(), sendCmd(), and sendPacket().

Member Data Documentation

bool TCPIface::anyListening = false
staticprivate

Definition at line 76 of file tcp_iface.hh.

Referenced by anyislistening(), and listen().

int TCPIface::fdStatic = -1
staticprivate

Definition at line 77 of file tcp_iface.hh.

Referenced by accept(), getfdStatic(), and listen().

bool TCPIface::isSwitch
private

Definition at line 73 of file tcp_iface.hh.

Referenced by establishConnection().

bool TCPIface::listening
private

Definition at line 75 of file tcp_iface.hh.

Referenced by islistening(), and listen().

std::vector< std::pair< TCPIface::NodeInfo, int > > TCPIface::nodes
staticprivate

Definition at line 89 of file tcp_iface.hh.

Referenced by establishConnection(), and TCPIface().

std::string TCPIface::serverName
private

Definition at line 70 of file tcp_iface.hh.

Referenced by connect().

int TCPIface::serverPort
private

Definition at line 71 of file tcp_iface.hh.

Referenced by connect(), and TCPIface().

int TCPIface::sock
private

The stream socket to connect to the server.

Definition at line 68 of file tcp_iface.hh.

Referenced by accept(), connect(), establishConnection(), recvHeader(), recvPacket(), sendPacket(), TCPIface(), and ~TCPIface().

vector< int > TCPIface::sockRegistry
staticprivate

Storage for all opened sockets.

Definition at line 93 of file tcp_iface.hh.

Referenced by establishConnection(), and sendCmd().


The documentation for this class was generated from the following files:

Generated on Fri Jun 9 2017 13:04:20 for gem5 by doxygen 1.8.6