gem5  v19.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Classes | Macros | Typedefs | Functions
serialize.hh File Reference
#include <algorithm>
#include <iostream>
#include <list>
#include <map>
#include <stack>
#include <set>
#include <vector>
#include "base/bitunion.hh"
#include "base/logging.hh"
#include "base/str.hh"

Go to the source code of this file.

Classes

class  CheckpointIn
 
class  Serializable
 Basic support for object serialization. More...
 
class  Serializable::ScopedCheckpointSection
 Scoped checkpoint section helper class. More...
 

Macros

#define SERIALIZE_SCALAR(scalar)   paramOut(cp, #scalar, scalar)
 
#define UNSERIALIZE_SCALAR(scalar)   paramIn(cp, #scalar, scalar)
 
#define UNSERIALIZE_OPT_SCALAR(scalar)   optParamIn(cp, #scalar, scalar)
 
#define SERIALIZE_ENUM(scalar)   paramOut(cp, #scalar, (int)scalar)
 
#define UNSERIALIZE_ENUM(scalar)
 
#define SERIALIZE_ARRAY(member, size)   arrayParamOut(cp, #member, member, size)
 
#define UNSERIALIZE_ARRAY(member, size)   arrayParamIn(cp, #member, member, size)
 
#define SERIALIZE_CONTAINER(member)   arrayParamOut(cp, #member, member)
 
#define UNSERIALIZE_CONTAINER(member)   arrayParamIn(cp, #member, member)
 
#define SERIALIZE_EVENT(event)   event.serializeSection(cp, #event);
 
#define UNSERIALIZE_EVENT(event)
 
#define SERIALIZE_OBJ(obj)   obj.serializeSection(cp, #obj)
 
#define UNSERIALIZE_OBJ(obj)   obj.unserializeSection(cp, #obj)
 
#define SERIALIZE_OBJPTR(objptr)   paramOut(cp, #objptr, (objptr)->name())
 
#define UNSERIALIZE_OBJPTR(objptr)
 

Typedefs

typedef std::ostream CheckpointOut
 

Functions

template<class T >
bool parseParam (const std::string &s, T &value)
 
template<class T >
void showParam (CheckpointOut &os, const T &value)
 
template<class T >
bool parseParam (const std::string &s, BitUnionType< T > &value)
 
template<class T >
void showParam (CheckpointOut &os, const BitUnionType< T > &value)
 
template<>
void showParam (CheckpointOut &os, const char &value)
 
template<>
void showParam (CheckpointOut &os, const signed char &value)
 
template<>
void showParam (CheckpointOut &os, const unsigned char &value)
 
template<>
bool parseParam (const std::string &s, float &value)
 
template<>
bool parseParam (const std::string &s, double &value)
 
template<>
bool parseParam (const std::string &s, bool &value)
 
template<>
void showParam (CheckpointOut &os, const bool &value)
 
template<>
bool parseParam (const std::string &s, std::string &value)
 
template<class T >
void paramOut (CheckpointOut &os, const std::string &name, const T &param)
 
template<class T >
void paramIn (CheckpointIn &cp, const std::string &name, T &param)
 
template<class T >
bool optParamIn (CheckpointIn &cp, const std::string &name, T &param, bool warn=true)
 
template<class T >
void arrayParamOut (CheckpointOut &os, const std::string &name, const std::vector< T > &param)
 
template<class T >
void arrayParamOut (CheckpointOut &os, const std::string &name, const std::list< T > &param)
 
template<class T >
void arrayParamOut (CheckpointOut &os, const std::string &name, const std::set< T > &param)
 
template<class T >
void arrayParamOut (CheckpointOut &os, const std::string &name, const T *param, unsigned size)
 
template<class T >
void arrayParamIn (CheckpointIn &cp, const std::string &name, T *param, unsigned size)
 Extract values stored in the checkpoint, and assign them to the provided array container. More...
 
template<class T >
void arrayParamIn (CheckpointIn &cp, const std::string &name, std::vector< T > &param)
 
template<class T >
void arrayParamIn (CheckpointIn &cp, const std::string &name, std::list< T > &param)
 
template<class T >
void arrayParamIn (CheckpointIn &cp, const std::string &name, std::set< T > &param)
 
void debug_serialize (const std::string &cpt_dir)
 
void objParamIn (CheckpointIn &cp, const std::string &name, SimObject *&param)
 

Macro Definition Documentation

◆ SERIALIZE_ARRAY

#define SERIALIZE_ARRAY (   member,
  size 
)    arrayParamOut(cp, #member, member, size)

◆ SERIALIZE_CONTAINER

#define SERIALIZE_CONTAINER (   member)    arrayParamOut(cp, #member, member)

◆ SERIALIZE_ENUM

#define SERIALIZE_ENUM (   scalar)    paramOut(cp, #scalar, (int)scalar)

◆ SERIALIZE_EVENT

#define SERIALIZE_EVENT (   event)    event.serializeSection(cp, #event);

Definition at line 670 of file serialize.hh.

◆ SERIALIZE_OBJ

#define SERIALIZE_OBJ (   obj)    obj.serializeSection(cp, #obj)

Definition at line 678 of file serialize.hh.

Referenced by HDLcd::serialize(), and BasePixelPump::serialize().

◆ SERIALIZE_OBJPTR

#define SERIALIZE_OBJPTR (   objptr)    paramOut(cp, #objptr, (objptr)->name())

Definition at line 681 of file serialize.hh.

Referenced by SparcISA::ISA::serialize().

◆ SERIALIZE_SCALAR

#define SERIALIZE_SCALAR (   scalar)    paramOut(cp, #scalar, scalar)

Definition at line 643 of file serialize.hh.

Referenced by ArmISA::EndBitUnion(), AnnotateDumpCallback::process(), Sp805::serialize(), X86ISA::I8237::serialize(), Pl011::serialize(), PollEvent::serialize(), FDEntry::serialize(), PS2Keyboard::serialize(), PS2TouchKit::serialize(), ThreadState::serialize(), DisplayTimings::serialize(), DumbTOD::serialize(), ThermalResistor::serialize(), FlashDevice::serialize(), PS2Mouse::serialize(), EtherTapBase::serialize(), Sinic::Base::serialize(), TsunamiPChip::serialize(), X86ISA::Speaker::serialize(), RiscvISA::PTE::serialize(), MipsISA::PTE::serialize(), AlphaBackdoor::Access::serialize(), ArmSemihosting::serialize(), FrameBuffer::serialize(), RubySystem::serialize(), PowerISA::TlbEntry::serialize(), EtherSwitch::Interface::serialize(), LocalSimLoopExitEvent::serialize(), ThermalCapacitor::serialize(), AlphaISA::ISA::serialize(), AlphaISA::Kernel::Statistics::serialize(), DistEtherLink::Link::serialize(), ThermalDomain::serialize(), X86ISA::Cmos::serialize(), HDLcd::serialize(), MipsISA::TlbEntry::serialize(), RiscvISA::TlbEntry::serialize(), CopyEngineReg::Reg< uint64_t >::serialize(), GpuDispatcher::serialize(), Uart8250::serialize(), ArmISA::PMU::serialize(), RiscvISA::TLB::serialize(), SystemCounter::serialize(), Root::serialize(), MipsISA::TLB::serialize(), CopyEngine::CopyEngineChannel::serialize(), X86ISA::I82094AA::serialize(), EtherSwitch::Interface::PortFifoEntry::serialize(), GenericISA::PCStateBase::serialize(), X86ISA::TlbEntry::serialize(), AlphaISA::TLB::serialize(), Sp804::Timer::serialize(), AlphaISA::Interrupts::serialize(), X86ISA::I8259::serialize(), PL031::serialize(), CopyEngineReg::Regs::serialize(), VoltageDomain::serialize(), ArmSemihosting::FileBase::serialize(), ThermalReference::serialize(), MaltaIO::serialize(), TrafficGen::serialize(), TsunamiCChip::serialize(), RiscvISA::Interrupts::serialize(), EnergyCtrl::serialize(), Pl050::serialize(), CowDiskImage::serialize(), A9GlobalTimer::Timer::serialize(), FileFDEntry::serialize(), TsunamiIO::serialize(), Iob::serialize(), X86ISA::I8042::serialize(), CpuLocalTimer::Timer::serialize(), AlphaISA::TlbEntry::serialize(), PowerISA::PTE::serialize(), I2CBus::serialize(), EtherTapStub::serialize(), Gicv3Its::serialize(), BasePixelPump::serialize(), X86ISA::TLB::serialize(), IdeController::serialize(), ThermalModel::serialize(), EtherSwitch::Interface::PortFifo::serialize(), SparcISA::ISA::serialize(), MC146818::serialize(), PowerISA::TLB::serialize(), DVFSHandler::serialize(), UFSHostDevice::serialize(), PipeFDEntry::serialize(), RealViewCtrl::serialize(), SparcISA::TLB::serialize(), ArchTimer::serialize(), CopyEngineReg::ChanRegs::serialize(), GicV2::BankedRegs::serialize(), VGic::serialize(), ArmSemihosting::FileFeatures::serialize(), RealViewOsc::serialize(), DeviceFDEntry::serialize(), VirtIO9PProxy::serialize(), Gicv3Redistributor::serialize(), PciDevice::serialize(), ArmSemihosting::File::serialize(), Gicv3Distributor::serialize(), DistIface::SyncNode::serialize(), SrcClockDomain::serialize(), PhysicalMemory::serialize(), ClockedObject::serialize(), BaseTrafficGen::serialize(), SparcISA::Interrupts::serialize(), GenericISA::UPCState< MachInst >::serialize(), BasePixelPump::PixelEvent::serialize(), ArmISA::Interrupts::serialize(), SparcISA::TlbEntry::serialize(), DistIface::SyncSwitch::serialize(), X86ISA::Interrupts::serialize(), Sinic::Device::serialize(), ArmISA::TlbEntry::serialize(), VirtQueue::serialize(), iGbReg::Regs::Reg< uint64_t >::serialize(), Gicv3CPUInterface::serialize(), IGbE::DescCache< iGbReg::RxDesc >::serialize(), X86ISA::PCState::serialize(), DmaReadFifo::serialize(), GenericISA::DelaySlotPCState< MachInst >::serialize(), DistIface::RecvScheduler::Desc::serialize(), NSGigE::serialize(), IdeDisk::serialize(), Pl111::serialize(), HDLcd::DmaEngine::serialize(), IGbE::RxDescCache::serialize(), BaseCPU::serialize(), Event::serialize(), ArmISA::PMU::CounterState::serialize(), DistIface::RecvScheduler::serialize(), GenericISA::DelaySlotUPCState< MachInst >::serialize(), GicV2::serialize(), IGbE::TxDescCache::serialize(), IGbE::serialize(), VirtIODeviceBase::serialize(), DistIface::serialize(), System::serialize(), iGbReg::Regs::serialize(), BaseCache::serialize(), and PhysicalMemory::serializeStore().

◆ UNSERIALIZE_ARRAY

#define UNSERIALIZE_ARRAY (   member,
  size 
)    arrayParamIn(cp, #member, member, size)

◆ UNSERIALIZE_CONTAINER

#define UNSERIALIZE_CONTAINER (   member)    arrayParamIn(cp, #member, member)

◆ UNSERIALIZE_ENUM

#define UNSERIALIZE_ENUM (   scalar)
Value:
do { \
int tmp; \
paramIn(cp, #scalar, tmp); \
scalar = static_cast<decltype(scalar)>(tmp); \
} while (0)
Definition: cprintf.cc:42

Definition at line 651 of file serialize.hh.

Referenced by ThreadState::unserialize(), X86ISA::I8259::unserialize(), I2CBus::unserialize(), ArmISA::TlbEntry::unserialize(), Gicv3CPUInterface::unserialize(), and IdeDisk::unserialize().

◆ UNSERIALIZE_EVENT

#define UNSERIALIZE_EVENT (   event)
Value:
do { \
event.unserializeSection(cp, #event); \
eventQueue()->checkpointReschedule(&event); \
} while (0)
Definition: cprintf.cc:42
Bitfield< 10, 5 > event

Definition at line 672 of file serialize.hh.

◆ UNSERIALIZE_OBJ

#define UNSERIALIZE_OBJ (   obj)    obj.unserializeSection(cp, #obj)

Definition at line 679 of file serialize.hh.

Referenced by BasePixelPump::unserialize().

◆ UNSERIALIZE_OBJPTR

#define UNSERIALIZE_OBJPTR (   objptr)
Value:
do { \
SimObject *sptr; \
objParamIn(cp, #objptr, sptr); \
objptr = dynamic_cast<decltype(objptr)>(sptr); \
} while (0)
Definition: cprintf.cc:42

Definition at line 683 of file serialize.hh.

Referenced by SparcISA::ISA::unserialize().

◆ UNSERIALIZE_OPT_SCALAR

#define UNSERIALIZE_OPT_SCALAR (   scalar)    optParamIn(cp, #scalar, scalar)

◆ UNSERIALIZE_SCALAR

#define UNSERIALIZE_SCALAR (   scalar)    paramIn(cp, #scalar, scalar)

Definition at line 645 of file serialize.hh.

Referenced by ArmISA::EndBitUnion(), AnnotateDumpCallback::process(), Sp805::unserialize(), X86ISA::I8237::unserialize(), Pl011::unserialize(), PollEvent::unserialize(), FDEntry::unserialize(), PS2Keyboard::unserialize(), PS2TouchKit::unserialize(), DisplayTimings::unserialize(), DumbTOD::unserialize(), ThermalResistor::unserialize(), ThreadState::unserialize(), FlashDevice::unserialize(), PS2Mouse::unserialize(), EtherTapBase::unserialize(), Sinic::Base::unserialize(), TsunamiPChip::unserialize(), X86ISA::Speaker::unserialize(), RiscvISA::PTE::unserialize(), MipsISA::PTE::unserialize(), AlphaBackdoor::Access::unserialize(), ArmSemihosting::unserialize(), FrameBuffer::unserialize(), RubySystem::unserialize(), EtherSwitch::Interface::unserialize(), PowerISA::TlbEntry::unserialize(), LocalSimLoopExitEvent::unserialize(), ThermalCapacitor::unserialize(), AlphaISA::ISA::unserialize(), AlphaISA::Kernel::Statistics::unserialize(), DistEtherLink::Link::unserialize(), ThermalDomain::unserialize(), X86ISA::Cmos::unserialize(), HDLcd::unserialize(), CopyEngineReg::Reg< uint64_t >::unserialize(), GpuDispatcher::unserialize(), MipsISA::TlbEntry::unserialize(), RiscvISA::TlbEntry::unserialize(), Uart8250::unserialize(), ArmISA::PMU::unserialize(), RiscvISA::TLB::unserialize(), SystemCounter::unserialize(), MipsISA::TLB::unserialize(), CopyEngine::CopyEngineChannel::unserialize(), X86ISA::I82094AA::unserialize(), EtherSwitch::Interface::PortFifoEntry::unserialize(), X86ISA::TlbEntry::unserialize(), AlphaISA::TLB::unserialize(), Sp804::Timer::unserialize(), GenericISA::PCStateBase::unserialize(), X86ISA::I8259::unserialize(), PL031::unserialize(), VoltageDomain::unserialize(), AlphaISA::Interrupts::unserialize(), ThermalReference::unserialize(), MaltaIO::unserialize(), TrafficGen::unserialize(), TsunamiCChip::unserialize(), CopyEngineReg::Regs::unserialize(), EnergyCtrl::unserialize(), Pl050::unserialize(), CowDiskImage::unserialize(), A9GlobalTimer::Timer::unserialize(), FileFDEntry::unserialize(), TsunamiIO::unserialize(), RiscvISA::Interrupts::unserialize(), Iob::unserialize(), X86ISA::I8042::unserialize(), AlphaISA::TlbEntry::unserialize(), PowerISA::PTE::unserialize(), CpuLocalTimer::Timer::unserialize(), I2CBus::unserialize(), EtherTapStub::unserialize(), Gicv3Its::unserialize(), BasePixelPump::unserialize(), X86ISA::TLB::unserialize(), IdeController::unserialize(), EmulationPageTable::unserialize(), ThermalModel::unserialize(), EtherSwitch::Interface::PortFifo::unserialize(), SparcISA::ISA::unserialize(), PowerISA::TLB::unserialize(), DVFSHandler::unserialize(), UFSHostDevice::unserialize(), MC146818::unserialize(), PipeFDEntry::unserialize(), RealViewCtrl::unserialize(), SparcISA::TLB::unserialize(), GicV2::BankedRegs::unserialize(), VGic::unserialize(), CopyEngineReg::ChanRegs::unserialize(), RealViewOsc::unserialize(), ArmSemihosting::FileFeatures::unserialize(), DeviceFDEntry::unserialize(), VirtIO9PProxy::unserialize(), Gicv3Redistributor::unserialize(), ArmSemihosting::File::unserialize(), PciDevice::unserialize(), Gicv3Distributor::unserialize(), DistIface::SyncNode::unserialize(), SrcClockDomain::unserialize(), ClockedObject::unserialize(), BaseTrafficGen::unserialize(), PhysicalMemory::unserialize(), SparcISA::Interrupts::unserialize(), BasePixelPump::PixelEvent::unserialize(), GenericISA::UPCState< MachInst >::unserialize(), ArmISA::Interrupts::unserialize(), SparcISA::TlbEntry::unserialize(), DistIface::SyncSwitch::unserialize(), X86ISA::Interrupts::unserialize(), Sinic::Device::unserialize(), VirtQueue::unserialize(), GenericTimerMem::unserialize(), iGbReg::Regs::Reg< uint64_t >::unserialize(), ArmISA::TlbEntry::unserialize(), Gicv3CPUInterface::unserialize(), IGbE::DescCache< iGbReg::RxDesc >::unserialize(), DmaReadFifo::unserialize(), X86ISA::PCState::unserialize(), DistIface::RecvScheduler::Desc::unserialize(), GenericISA::DelaySlotPCState< MachInst >::unserialize(), NSGigE::unserialize(), IdeDisk::unserialize(), Pl111::unserialize(), HDLcd::DmaEngine::unserialize(), IGbE::RxDescCache::unserialize(), Event::unserialize(), BaseCPU::unserialize(), ArmISA::PMU::CounterState::unserialize(), DistIface::RecvScheduler::unserialize(), GenericISA::DelaySlotUPCState< MachInst >::unserialize(), GicV2::unserialize(), IGbE::TxDescCache::unserialize(), IGbE::unserialize(), VirtIODeviceBase::unserialize(), DistIface::unserialize(), System::unserialize(), iGbReg::Regs::unserialize(), BaseCache::unserialize(), and PhysicalMemory::unserializeStore().

Typedef Documentation

◆ CheckpointOut

typedef std::ostream CheckpointOut

Definition at line 68 of file serialize.hh.

Function Documentation

◆ arrayParamIn() [1/4]

template<class T >
void arrayParamIn ( CheckpointIn cp,
const std::string &  name,
T *  param,
unsigned  size 
)

Extract values stored in the checkpoint, and assign them to the provided array container.

Parameters
cpThe checkpoint to be parsed.
nameName of the container.
paramThe array container.
sizeThe expected number of entries to be extracted.

Definition at line 488 of file serialize.hh.

References Serializable::currentSection(), fatal, fatal_if, CheckpointIn::find(), ArmISA::i, name(), parseParam(), and tokenize().

◆ arrayParamIn() [2/4]

template<class T >
void arrayParamIn ( CheckpointIn cp,
const std::string &  name,
std::vector< T > &  param 
)

◆ arrayParamIn() [3/4]

template<class T >
void arrayParamIn ( CheckpointIn cp,
const std::string &  name,
std::list< T > &  param 
)

◆ arrayParamIn() [4/4]

template<class T >
void arrayParamIn ( CheckpointIn cp,
const std::string &  name,
std::set< T > &  param 
)

◆ arrayParamOut() [1/4]

template<class T >
void arrayParamOut ( CheckpointOut os,
const std::string &  name,
const std::vector< T > &  param 
)

Definition at line 410 of file serialize.hh.

References ArmISA::i, and showParam().

◆ arrayParamOut() [2/4]

template<class T >
void arrayParamOut ( CheckpointOut os,
const std::string &  name,
const std::list< T > &  param 
)

Definition at line 426 of file serialize.hh.

References showParam().

◆ arrayParamOut() [3/4]

template<class T >
void arrayParamOut ( CheckpointOut os,
const std::string &  name,
const std::set< T > &  param 
)

Definition at line 445 of file serialize.hh.

References showParam().

◆ arrayParamOut() [4/4]

template<class T >
void arrayParamOut ( CheckpointOut os,
const std::string &  name,
const T *  param,
unsigned  size 
)

Definition at line 464 of file serialize.hh.

References ArmISA::i, and showParam().

◆ debug_serialize()

void debug_serialize ( const std::string &  cpt_dir)

Referenced by arrayParamIn().

◆ objParamIn()

void objParamIn ( CheckpointIn cp,
const std::string &  name,
SimObject *&  param 
)

Referenced by arrayParamIn().

◆ optParamIn()

template<class T >
bool optParamIn ( CheckpointIn cp,
const std::string &  name,
T &  param,
bool  warn = true 
)

◆ paramIn()

template<class T >
void paramIn ( CheckpointIn cp,
const std::string &  name,
T &  param 
)

◆ paramOut()

template<class T >
void paramOut ( CheckpointOut os,
const std::string &  name,
const T &  param 
)

Definition at line 374 of file serialize.hh.

References showParam().

◆ parseParam() [1/6]

template<class T >
bool parseParam ( const std::string &  s,
T &  value 
)

Definition at line 276 of file serialize.hh.

References to_number().

Referenced by arrayParamIn(), optParamIn(), and paramIn().

◆ parseParam() [2/6]

template<class T >
bool parseParam ( const std::string &  s,
BitUnionType< T > &  value 
)

Definition at line 290 of file serialize.hh.

References to_number().

◆ parseParam() [3/6]

template<>
bool parseParam ( const std::string &  s,
float &  value 
)
inline

Definition at line 336 of file serialize.hh.

References to_number().

◆ parseParam() [4/6]

template<>
bool parseParam ( const std::string &  s,
double &  value 
)
inline

Definition at line 343 of file serialize.hh.

References to_number().

◆ parseParam() [5/6]

template<>
bool parseParam ( const std::string &  s,
bool &  value 
)
inline

Definition at line 350 of file serialize.hh.

References to_bool().

◆ parseParam() [6/6]

template<>
bool parseParam ( const std::string &  s,
std::string &  value 
)
inline

Definition at line 366 of file serialize.hh.

References ArmISA::s.

◆ showParam() [1/6]

template<class T >
void showParam ( CheckpointOut os,
const T &  value 
)

Definition at line 283 of file serialize.hh.

Referenced by arrayParamOut(), and paramOut().

◆ showParam() [2/6]

template<class T >
void showParam ( CheckpointOut os,
const BitUnionType< T > &  value 
)

Definition at line 301 of file serialize.hh.

◆ showParam() [3/6]

template<>
void showParam ( CheckpointOut os,
const char &  value 
)
inline

Definition at line 315 of file serialize.hh.

◆ showParam() [4/6]

template<>
void showParam ( CheckpointOut os,
const signed char &  value 
)
inline

Definition at line 322 of file serialize.hh.

◆ showParam() [5/6]

template<>
void showParam ( CheckpointOut os,
const unsigned char &  value 
)
inline

Definition at line 329 of file serialize.hh.

◆ showParam() [6/6]

template<>
void showParam ( CheckpointOut os,
const bool &  value 
)
inline

Definition at line 358 of file serialize.hh.


Generated on Fri Feb 28 2020 16:27:06 for gem5 by doxygen 1.8.13