dev: Make the EtherDevice class inherit EtherObject.
This avoids having to define two parallel versions of the getEthPort function, and the complex dynamic_cast macrame in connectPorts(). Change-Id: I24c09864005ff39a049e50d7245ff17e9480edea Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17029 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
@@ -127,6 +127,7 @@ class EtherDevice(PciDevice):
|
||||
type = 'EtherDevice'
|
||||
abstract = True
|
||||
cxx_header = "dev/net/etherdevice.hh"
|
||||
cxx_extra_bases = [ "EtherObject" ]
|
||||
interface = MasterPort("Ethernet Interface")
|
||||
|
||||
class IGbE(EtherDevice):
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#define __DEV_NET_ETHERDEVICE_HH__
|
||||
|
||||
#include "base/statistics.hh"
|
||||
#include "dev/net/etherobject.hh"
|
||||
#include "dev/pci/device.hh"
|
||||
#include "params/EtherDevBase.hh"
|
||||
#include "params/EtherDevice.hh"
|
||||
@@ -44,11 +45,7 @@
|
||||
|
||||
class EtherInt;
|
||||
|
||||
/**
|
||||
* The base EtherObject class, allows for an accesor function to a
|
||||
* simobj that returns the Port.
|
||||
*/
|
||||
class EtherDevice : public PciDevice
|
||||
class EtherDevice : public PciDevice, public EtherObject
|
||||
{
|
||||
public:
|
||||
typedef EtherDeviceParams Params;
|
||||
@@ -62,10 +59,6 @@ class EtherDevice : public PciDevice
|
||||
return dynamic_cast<const Params *>(_params);
|
||||
}
|
||||
|
||||
public:
|
||||
/** Additional function to return the Port of a memory object. */
|
||||
virtual EtherInt *getEthPort(const std::string &if_name, int idx = -1) = 0;
|
||||
|
||||
public:
|
||||
void regStats();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user