summaryrefslogtreecommitdiff
path: root/src/VBox/Devices/Network/DevPCNet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Devices/Network/DevPCNet.cpp')
-rw-r--r--src/VBox/Devices/Network/DevPCNet.cpp148
1 files changed, 76 insertions, 72 deletions
diff --git a/src/VBox/Devices/Network/DevPCNet.cpp b/src/VBox/Devices/Network/DevPCNet.cpp
index 2a29441bb..6deff1f48 100644
--- a/src/VBox/Devices/Network/DevPCNet.cpp
+++ b/src/VBox/Devices/Network/DevPCNet.cpp
@@ -1,4 +1,4 @@
-/* $Id: DevPCNet.cpp 28800 2010-04-27 08:22:32Z vboxsync $ */
+/* $Id: DevPCNet.cpp 29435 2010-05-12 20:55:39Z vboxsync $ */
/** @file
* DevPCNet - AMD PCnet-PCI II / PCnet-FAST III (Am79C970A / Am79C973) Ethernet Controller Emulation.
*
@@ -271,28 +271,30 @@ struct PCNetState_st
STAMCOUNTER StatReceiveBytes;
STAMCOUNTER StatTransmitBytes;
#ifdef VBOX_WITH_STATISTICS
- STAMPROFILEADV StatMMIOReadGC;
- STAMPROFILEADV StatMMIOReadHC;
- STAMPROFILEADV StatMMIOWriteGC;
- STAMPROFILEADV StatMMIOWriteHC;
+ STAMPROFILEADV StatMMIOReadRZ;
+ STAMPROFILEADV StatMMIOReadR3;
+ STAMPROFILEADV StatMMIOWriteRZ;
+ STAMPROFILEADV StatMMIOWriteR3;
STAMPROFILEADV StatAPROMRead;
STAMPROFILEADV StatAPROMWrite;
- STAMPROFILEADV StatIOReadGC;
- STAMPROFILEADV StatIOReadHC;
- STAMPROFILEADV StatIOWriteGC;
- STAMPROFILEADV StatIOWriteHC;
+ STAMPROFILEADV StatIOReadRZ;
+ STAMPROFILEADV StatIOReadR3;
+ STAMPROFILEADV StatIOWriteRZ;
+ STAMPROFILEADV StatIOWriteR3;
STAMPROFILEADV StatTimer;
STAMPROFILEADV StatReceive;
- STAMPROFILEADV StatTransmit;
+ STAMPROFILEADV StatTransmitR3;
+ STAMPROFILEADV StatTransmitRZ;
STAMCOUNTER StatTransmitCase1;
STAMCOUNTER StatTransmitCase2;
- STAMPROFILE StatTransmitSend;
- STAMPROFILEADV StatTdtePollGC;
- STAMPROFILEADV StatTdtePollHC;
- STAMPROFILEADV StatTmdStoreGC;
- STAMPROFILEADV StatTmdStoreHC;
- STAMPROFILEADV StatRdtePollGC;
- STAMPROFILEADV StatRdtePollHC;
+ STAMPROFILE StatTransmitSendR3;
+ STAMPROFILE StatTransmitSendRZ;
+ STAMPROFILEADV StatTdtePollRZ;
+ STAMPROFILEADV StatTdtePollR3;
+ STAMPROFILEADV StatTmdStoreRZ;
+ STAMPROFILEADV StatTmdStoreR3;
+ STAMPROFILEADV StatRdtePollR3;
+ STAMPROFILEADV StatRdtePollRZ;
STAMPROFILE StatRxOverflow;
STAMCOUNTER StatRxOverflowWakeup;
STAMCOUNTER aStatXmitFlush[16];
@@ -304,17 +306,17 @@ struct PCNetState_st
# ifdef PCNET_NO_POLLING
STAMCOUNTER StatRCVRingWrite;
STAMCOUNTER StatTXRingWrite;
- STAMCOUNTER StatRingWriteHC;
+ STAMCOUNTER StatRingWriteR3;
STAMCOUNTER StatRingWriteR0;
- STAMCOUNTER StatRingWriteGC;
+ STAMCOUNTER StatRingWriteRC;
- STAMCOUNTER StatRingWriteFailedHC;
+ STAMCOUNTER StatRingWriteFailedR3;
STAMCOUNTER StatRingWriteFailedR0;
- STAMCOUNTER StatRingWriteFailedGC;
+ STAMCOUNTER StatRingWriteFailedRC;
- STAMCOUNTER StatRingWriteOutsideHC;
+ STAMCOUNTER StatRingWriteOutsideR3;
STAMCOUNTER StatRingWriteOutsideR0;
- STAMCOUNTER StatRingWriteOutsideGC;
+ STAMCOUNTER StatRingWriteOutsideRC;
# endif
#endif /* VBOX_WITH_STATISTICS */
};
@@ -691,7 +693,7 @@ DECLINLINE(bool) pcnetTmdLoad(PCNetState *pThis, TMD *tmd, RTGCPHYS32 addr, bool
*/
DECLINLINE(void) pcnetTmdStorePassHost(PCNetState *pThis, TMD *tmd, RTGCPHYS32 addr)
{
- STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatTmdStore), a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatTmdStore), a);
PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
if (pThis->fPrivIfEnabled)
{
@@ -733,7 +735,7 @@ DECLINLINE(void) pcnetTmdStorePassHost(PCNetState *pThis, TMD *tmd, RTGCPHYS32 a
xda[1] &= ~0x80000000;
PDMDevHlpPhysWrite(pDevIns, addr+7, (uint8_t*)xda + 7, 1);
}
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTmdStore), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTmdStore), a);
}
/**
@@ -1673,7 +1675,7 @@ static DECLCALLBACK(bool) pcnetCanRxQueueConsumer(PPDMDEVINS pDevIns, PPDMQUEUEI
*/
static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
{
- STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatRdtePoll), a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatRdtePoll), a);
/* assume lack of a next receive descriptor */
CSR_NRST(pThis) = 0;
@@ -1696,7 +1698,7 @@ static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
CSR_CRBC(pThis) = CSR_CRST(pThis) = 0;
if (!pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, addr), true))
{
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatRdtePoll), a);
return;
}
if (RT_LIKELY(!IS_RMD_BAD(rmd)))
@@ -1718,7 +1720,7 @@ static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
}
else
{
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatRdtePoll), a);
/* This is not problematic since we don't own the descriptor
* We actually do own it, otherwise pcnetRmdLoad would have returned false.
* Don't flood the release log with errors.
@@ -1740,7 +1742,7 @@ static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
CSR_NRBC(pThis) = 0;
if (!pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, addr), true))
{
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatRdtePoll), a);
return;
}
if (RT_LIKELY(!IS_RMD_BAD(rmd)))
@@ -1752,7 +1754,7 @@ static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
}
else
{
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatRdtePoll), a);
/* This is not problematic since we don't own the descriptor
* We actually do own it, otherwise pcnetRmdLoad would have returned false.
* Don't flood the release log with errors.
@@ -1772,7 +1774,7 @@ static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
CSR_CRDA(pThis) = CSR_CRBA(pThis) = CSR_NRDA(pThis) = CSR_NRBA(pThis) = 0;
CSR_CRBC(pThis) = CSR_NRBC(pThis) = CSR_CRST(pThis) = 0;
}
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatRdtePoll), a);
}
/**
@@ -1781,20 +1783,20 @@ static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
*/
static int pcnetTdtePoll(PCNetState *pThis, TMD *tmd)
{
- STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatTdtePoll), a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatTdtePoll), a);
if (RT_LIKELY(pThis->GCTDRA))
{
RTGCPHYS32 cxda = pcnetTdraAddr(pThis, CSR_XMTRC(pThis));
if (!pcnetTmdLoad(pThis, tmd, PHYSADDR(pThis, cxda), true))
{
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTdtePoll), a);
return 0;
}
if (RT_UNLIKELY(tmd->tmd1.ones != 15))
{
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTdtePoll), a);
LogRel(("PCNet#%d: BAD TMD XDA=%#010x\n",
PCNET_INST_NR, PHYSADDR(pThis, cxda)));
return 0;
@@ -1809,7 +1811,7 @@ static int pcnetTdtePoll(PCNetState *pThis, TMD *tmd)
CSR_CXDA(pThis) = cxda;
CSR_CXBC(pThis) = tmd->tmd1.bcnt;
CSR_CXST(pThis) = ((uint32_t *)tmd)[1] >> 16;
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTdtePoll), a);
return CARD_IS_OWNER(CSR_CXST(pThis));
}
else
@@ -1817,7 +1819,7 @@ static int pcnetTdtePoll(PCNetState *pThis, TMD *tmd)
/** @todo consistency with previous receive descriptor */
CSR_CXDA(pThis) = 0;
CSR_CXBC(pThis) = CSR_CXST(pThis) = 0;
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTdtePoll), a);
return 0;
}
}
@@ -2169,7 +2171,7 @@ DECLINLINE(int) pcnetXmitSendBuf(PCNetState *pThis, bool fLoopback, PPDMSCATTERG
* longer. If we could avoid that we could cache a bit more info in
* the loop and make it part of the driver<->device contract, saving
* critsect mess down in DrvIntNet. */
- STAM_PROFILE_START(&pThis->StatTransmitSend, a);
+ STAM_PROFILE_START(&pThis->CTX_SUFF_Z(StatTransmitSend), a);
if (pSgBuf->cbUsed > 70) /* unqualified guess */
pThis->Led.Asserted.s.fWriting = pThis->Led.Actual.s.fWriting = 1;
@@ -2183,7 +2185,7 @@ DECLINLINE(int) pcnetXmitSendBuf(PCNetState *pThis, bool fLoopback, PPDMSCATTERG
rc = VERR_NET_DOWN;
pThis->Led.Actual.s.fWriting = 0;
- STAM_PROFILE_STOP(&pThis->StatTransmitSend, a);
+ STAM_PROFILE_STOP(&pThis->CTX_SUFF_Z(StatTransmitSend), a);
}
return rc;
}
@@ -2398,7 +2400,7 @@ static int pcnetAsyncTransmit(PCNetState *pThis, bool fOnWorkerThread)
*/
int rc;
unsigned cFlushIrq = 0;
- STAM_PROFILE_ADV_START(&pThis->StatTransmit, a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatTransmit), a);
do
{
#ifdef VBOX_WITH_STATISTICS
@@ -2447,7 +2449,7 @@ static int pcnetAsyncTransmit(PCNetState *pThis, bool fOnWorkerThread)
}
else if (rc == VERR_TRY_AGAIN)
{
- STAM_PROFILE_ADV_STOP(&pThis->StatTransmit, a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTransmit), a);
return VINF_SUCCESS;
}
if (RT_FAILURE(rc))
@@ -2506,7 +2508,7 @@ static int pcnetAsyncTransmit(PCNetState *pThis, bool fOnWorkerThread)
rc = pcnetXmitAllocBuf(pThis, RT_MAX(MAX_FRAME, cb), fLoopback, &SgLoop, &pSgBuf);
if (rc == VERR_TRY_AGAIN)
{
- STAM_PROFILE_ADV_STOP(&pThis->StatTransmit, a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTransmit), a);
return VINF_SUCCESS;
}
@@ -2627,7 +2629,7 @@ static int pcnetAsyncTransmit(PCNetState *pThis, bool fOnWorkerThread)
pcnetUpdateIrq(pThis);
}
- STAM_PROFILE_ADV_STOP(&pThis->StatTransmit, a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatTransmit), a);
return VINF_SUCCESS;
}
@@ -3715,7 +3717,7 @@ PDMBOTHCBDECL(int) pcnetIOPortRead(PPDMDEVINS pDevIns, void *pvUser,
PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
int rc = VINF_SUCCESS;
- STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatIORead), a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatIORead), a);
rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_READ);
if (RT_LIKELY(rc == VINF_SUCCESS))
{
@@ -3731,7 +3733,7 @@ PDMBOTHCBDECL(int) pcnetIOPortRead(PPDMDEVINS pDevIns, void *pvUser,
}
PDMCritSectLeave(&pThis->CritSect);
}
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatIORead), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatIORead), a);
Log2(("#%d pcnetIOPortRead: Port=%RTiop *pu32=%#RX32 cb=%d rc=%Rrc\n", PCNET_INST_NR, Port, *pu32, cb, rc));
#ifdef LOG_ENABLED
if (rc == VINF_IOM_HC_IOPORT_READ)
@@ -3758,7 +3760,7 @@ PDMBOTHCBDECL(int) pcnetIOPortWrite(PPDMDEVINS pDevIns, void *pvUser,
PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
int rc = VINF_SUCCESS;
- STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatIOWrite), a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatIOWrite), a);
rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_WRITE);
if (RT_LIKELY(rc == VINF_SUCCESS))
{
@@ -3774,7 +3776,7 @@ PDMBOTHCBDECL(int) pcnetIOPortWrite(PPDMDEVINS pDevIns, void *pvUser,
}
PDMCritSectLeave(&pThis->CritSect);
}
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatIOWrite), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatIOWrite), a);
Log2(("#%d pcnetIOPortWrite: Port=%RTiop u32=%#RX32 cb=%d rc=%Rrc\n", PCNET_INST_NR, Port, u32, cb, rc));
#ifdef LOG_ENABLED
if (rc == VINF_IOM_HC_IOPORT_WRITE)
@@ -3806,7 +3808,7 @@ PDMBOTHCBDECL(int) pcnetMMIORead(PPDMDEVINS pDevIns, void *pvUser,
*/
if (GCPhysAddr - pThis->MMIOBase < PCNET_PNPMMIO_SIZE)
{
- STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatMMIORead), a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatMMIORead), a);
rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_MMIO_READ);
if (RT_LIKELY(rc == VINF_SUCCESS))
{
@@ -3822,7 +3824,7 @@ PDMBOTHCBDECL(int) pcnetMMIORead(PPDMDEVINS pDevIns, void *pvUser,
}
PDMCritSectLeave(&pThis->CritSect);
}
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatMMIORead), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatMMIORead), a);
}
else
memset(pv, 0, cb);
@@ -3859,7 +3861,7 @@ PDMBOTHCBDECL(int) pcnetMMIOWrite(PPDMDEVINS pDevIns, void *pvUser,
*/
if (GCPhysAddr - pThis->MMIOBase < PCNET_PNPMMIO_SIZE)
{
- STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatMMIOWrite), a);
+ STAM_PROFILE_ADV_START(&pThis->CTX_SUFF_Z(StatMMIOWrite), a);
rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_MMIO_WRITE);
if (RT_LIKELY(rc == VINF_SUCCESS))
{
@@ -3877,7 +3879,7 @@ PDMBOTHCBDECL(int) pcnetMMIOWrite(PPDMDEVINS pDevIns, void *pvUser,
}
// else rc == VINF_IOM_HC_MMIO_WRITE => handle in ring3
- STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatMMIOWrite), a);
+ STAM_PROFILE_ADV_STOP(&pThis->CTX_SUFF_Z(StatMMIOWrite), a);
}
LogFlow(("#%d pcnetMMIOWrite: pvUser=%p:{%.*Rhxs} cb=%d GCPhysAddr=%RGp rc=%Rrc\n",
PCNET_INST_NR, pv, cb, pv, cb, GCPhysAddr, rc));
@@ -5281,16 +5283,16 @@ static DECLCALLBACK(int) pcnetConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGM
pcnetHardReset(pThis);
#ifdef VBOX_WITH_STATISTICS
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOReadGC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in GC", "/Devices/PCNet%d/MMIO/ReadGC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOReadHC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in HC", "/Devices/PCNet%d/MMIO/ReadHC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOWriteGC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in GC", "/Devices/PCNet%d/MMIO/WriteGC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOWriteHC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in HC", "/Devices/PCNet%d/MMIO/WriteHC", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOReadRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in RZ", "/Devices/PCNet%d/MMIO/ReadRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOReadR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in R3", "/Devices/PCNet%d/MMIO/ReadR3", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOWriteRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in RZ", "/Devices/PCNet%d/MMIO/WriteRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOWriteR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in R3", "/Devices/PCNet%d/MMIO/WriteR3", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatAPROMRead, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling APROM reads", "/Devices/PCNet%d/IO/APROMRead", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatAPROMWrite, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling APROM writes", "/Devices/PCNet%d/IO/APROMWrite", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOReadGC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in GC", "/Devices/PCNet%d/IO/ReadGC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOReadHC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in HC", "/Devices/PCNet%d/IO/ReadHC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOWriteGC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in GC", "/Devices/PCNet%d/IO/WriteGC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOWriteHC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in HC", "/Devices/PCNet%d/IO/WriteHC", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOReadRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in RZ", "/Devices/PCNet%d/IO/ReadRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOReadR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in R3", "/Devices/PCNet%d/IO/ReadR3", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOWriteRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in RZ", "/Devices/PCNet%d/IO/WriteRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOWriteR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in R3", "/Devices/PCNet%d/IO/WriteR3", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTimer, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling Timer", "/Devices/PCNet%d/Timer", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatReceive, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling receive", "/Devices/PCNet%d/Receive", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRxOverflow, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_OCCURENCE, "Profiling RX overflows", "/Devices/PCNet%d/RxOverflow", iInstance);
@@ -5300,18 +5302,20 @@ static DECLCALLBACK(int) pcnetConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGM
#ifdef VBOX_WITH_STATISTICS
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitCase1, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Single descriptor transmit", "/Devices/PCNet%d/Transmit/Case1", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitCase2, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Multi descriptor transmit", "/Devices/PCNet%d/Transmit/Case2", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmit, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling transmits in HC", "/Devices/PCNet%d/Transmit/Total", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling transmits in RZ", "/Devices/PCNet%d/Transmit/TotalRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling transmits in R3", "/Devices/PCNet%d/Transmit/TotalR3", iInstance);
#endif
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitBytes, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES, "Amount of data transmitted", "/Devices/PCNet%d/TransmitBytes", iInstance);
#ifdef VBOX_WITH_STATISTICS
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitSend, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet send transmit in HC","/Devices/PCNet%d/Transmit/Send", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTdtePollGC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in GC", "/Devices/PCNet%d/TdtePollGC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTdtePollHC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in HC", "/Devices/PCNet%d/TdtePollHC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRdtePollGC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in GC", "/Devices/PCNet%d/RdtePollGC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRdtePollHC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in HC", "/Devices/PCNet%d/RdtePollHC", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitSendRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet send transmit in RZ","/Devices/PCNet%d/Transmit/SendRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitSendR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet send transmit in R3","/Devices/PCNet%d/Transmit/SendR3", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTdtePollRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in RZ", "/Devices/PCNet%d/TdtePollRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTdtePollR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in R3", "/Devices/PCNet%d/TdtePollR3", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRdtePollRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in RZ", "/Devices/PCNet%d/RdtePollRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRdtePollR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in R3", "/Devices/PCNet%d/RdtePollR3", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTmdStoreGC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in GC", "/Devices/PCNet%d/TmdStoreGC", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTmdStoreHC, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in HC", "/Devices/PCNet%d/TmdStoreHC", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTmdStoreRZ, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in RZ", "/Devices/PCNet%d/TmdStoreRZ", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTmdStoreR3, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in R3", "/Devices/PCNet%d/TmdStoreR3", iInstance);
unsigned i;
for (i = 0; i < RT_ELEMENTS(pThis->aStatXmitFlush) - 1; i++)
@@ -5330,15 +5334,15 @@ static DECLCALLBACK(int) pcnetConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGM
# ifdef PCNET_NO_POLLING
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRCVRingWrite, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of receive ring writes", "/Devices/PCNet%d/Ring/RCVWrites", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTXRingWrite, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of transmit ring writes", "/Devices/PCNet%d/Ring/TXWrites", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteHC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored ring page writes", "/Devices/PCNet%d/Ring/HC/Writes", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteR3, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored ring page writes", "/Devices/PCNet%d/Ring/R3/Writes", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteR0, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored ring page writes", "/Devices/PCNet%d/Ring/R0/Writes", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteGC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored ring page writes", "/Devices/PCNet%d/Ring/GC/Writes", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedHC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of failed ring page writes", "/Devices/PCNet%d/Ring/HC/Failed", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteRC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored ring page writes", "/Devices/PCNet%d/Ring/RC/Writes", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedR3, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of failed ring page writes", "/Devices/PCNet%d/Ring/R3/Failed", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedR0, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of failed ring page writes", "/Devices/PCNet%d/Ring/R0/Failed", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedGC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of failed ring page writes", "/Devices/PCNet%d/Ring/GC/Failed", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideHC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/HC/Outside", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedRC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of failed ring page writes", "/Devices/PCNet%d/Ring/RC/Failed", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideR3, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/R3/Outside", iInstance);
PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideR0, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/R0/Outside", iInstance);
- PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideGC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/GC/Outside", iInstance);
+ PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideRC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/RC/Outside", iInstance);
# endif /* PCNET_NO_POLLING */
#endif