#include "dev/etherpkt.hh"
#include "sim/builder.hh"
#include "sim/universe.hh"
+#include "sim/system.hh"
using namespace std;
dump(d), event(&mainEventQueue, this)
{}
+void
+EtherLink::serialize(ostream &os)
+{
+ link1->serialize(os);
+ link2->serialize(os);
+}
+
+void
+EtherLink::unserialize(Checkpoint *cp, const string §ion)
+{
+ link1->unserialize(cp, section);
+ link2->unserialize(cp, section);
+}
+
void
EtherLink::Link::txDone()
{
return true;
}
+void
+EtherLink::Link::serialize(ostream &os)
+{
+ bool packetExists = false;
+ if (packet) packetExists = true;
+ SERIALIZE_SCALAR(packetExists);
+ if (packetExists) {
+ nameOut(os, csprintf("%s.linkPacket", name()));
+ packet->serialize(os);
+ }
+
+ bool event_scheduled = event.scheduled();
+ SERIALIZE_SCALAR(event_scheduled);
+ if (event_scheduled) {
+ SERIALIZE_SCALAR(event.when());
+ }
+}
+
+void
+EtherLink::Link::unserialize(Checkpoint *cp, const string §ion)
+{
+ bool event_scheduled, packetExists;
+ Tick eventTime;
+ UNSERIALIZE_SCALAR(packetExists);
+ if (packetExists) {
+ packet = new EtherPacket;
+ packet->unserialize(cp, csprintf("%s.linkPacket", section));
+ }
+
+ UNSERIALIZE_SCALAR(event_scheduled);
+ if (event_scheduled) {
+ UNSERIALIZE_SCALAR(eventTime);
+ event.schedule(eventTime);
+ }
+}
+
BEGIN_DECLARE_SIM_OBJECT_PARAMS(EtherLink)
SimObjectParam<EtherInt *> interface1;
void setTxInt(Interface *i) { assert(!txint); txint = i; }
void setRxInt(Interface *i) { assert(!rxint); rxint = i; }
+
+ virtual void serialize(std::ostream &os);
+ virtual void unserialize(Checkpoint *cp, const std::string §ion);
};
/*
EtherLink(const std::string &name, EtherInt *i1, EtherInt *i2,
Tick speed, EtherDump *dump);
virtual ~EtherLink();
+
+ virtual void serialize(std::ostream &os);
+ virtual void unserialize(Checkpoint *cp, const std::string §ion);
+
};
#endif // __ETHERLINK_HH__