Add a stat that counts buffer underruns in the HDLCD controller. The
stat counts at most one underrun per frame since the controller aborts
the current frame if it underruns.
{
}
+void
+HDLcd::regStats()
+{
+ using namespace Stats;
+
+ stats.underruns
+ .name(name() + ".underruns")
+ .desc("number of buffer underruns")
+ .flags(nozero)
+ ;
+}
+
void
HDLcd::serialize(CheckpointOut &cp) const
{
HDLcd::pxlUnderrun()
{
DPRINTF(HDLcd, "Buffer underrun, stopping DMA fill.\n");
+ ++stats.underruns;
intRaise(INT_UNDERRUN);
dmaEngine->abortFrame();
}
HDLcd(const HDLcdParams *p);
~HDLcd();
+ void regStats() M5_ATTR_OVERRIDE;
+
void serialize(CheckpointOut &cp) const M5_ATTR_OVERRIDE;
void unserialize(CheckpointIn &cp) M5_ATTR_OVERRIDE;
};
std::unique_ptr<DmaEngine> dmaEngine;
+
+ protected: // Statistics
+ struct {
+ Stats::Scalar underruns;
+ } stats;
};
#endif