Changeset 24616 in vbox
- Timestamp:
- Nov 12, 2009 5:34:59 PM (15 years ago)
- Location:
- trunk/src/VBox/Devices
- Files:
-
- 4 edited
-
Network/DevVirtioNet.cpp (modified) (38 diffs)
-
testcase/Makefile.kmk (modified) (2 diffs)
-
testcase/tstDeviceStructSize.cpp (modified) (2 diffs)
-
testcase/tstDeviceStructSizeGC.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DevVirtioNet.cpp
r24611 r24616 23 23 24 24 #define LOG_GROUP LOG_GROUP_DEV_VIRTIO_NET 25 #define VNET_GC_SUPPORT 25 26 26 27 #include <iprt/ctype.h> … … 41 42 // TODO: move declarations to the header file: #include "DevVirtioNet.h" 42 43 44 #ifndef VBOX_DEVICE_STRUCT_TESTCASE 45 43 46 #define INSTANCE(pState) pState->szInstance 44 47 #define IFACE_TO_STATE(pIface, ifaceName) ((VPCISTATE *)((char*)pIface - RT_OFFSETOF(VPCISTATE, ifaceName))) … … 47 50 48 51 #ifdef DEBUG 49 #define QUEUENAME(s, q) g_VPCIDevices[s->enmDevType].pfnGetQueueName(s, q)52 #define QUEUENAME(s, q) (q->pcszName) 50 53 #endif /* DEBUG */ 54 55 #endif /* VBOX_DEVICE_STRUCT_TESTCASE */ 51 56 52 57 //- TODO: Move to Virtio.h ---------------------------------------------------- … … 102 107 { 103 108 uint16_t uSize; 109 uint16_t padding[3]; 104 110 RTGCPHYS addrDescriptors; 105 111 RTGCPHYS addrAvail; … … 115 121 uint16_t uNextUsedIndex; 116 122 uint32_t uPageNumber; 123 #ifdef IN_RING3 117 124 void (*pfnCallback)(void *pvState, struct VQueue *pQueue); 125 #else 126 RTR3UINTPTR pfnCallback; 127 #endif 128 R3PTRTYPE(const char *) pcszName; 118 129 }; 119 130 typedef struct VQueue VQUEUE; … … 143 154 { 144 155 VIRTIO_NET_ID = 0, 145 VIRTIO_BLK_ID = 1 156 VIRTIO_BLK_ID = 1, 157 VIRTIO_32BIT_HACK = 0x7fffffff 146 158 }; 147 159 160 #define VIRTIO_NET_NQUEUES 3 161 #define VIRTIO_MAX_NQUEUES 3 162 148 163 struct VPCIState_st 149 164 { 150 PDMCRITSECT cs;/**< Critical section - what is it protecting? */165 PDMCRITSECT cs; /**< Critical section - what is it protecting? */ 151 166 /* Read-only part, never changes after initialization. */ 152 VirtioDeviceType enmDevType; /**< Device type: net or blk. */ 153 char szInstance[8]; /**< Instance name, e.g. VNet#1. */ 154 155 PDMIBASE IBase; 156 PDMILEDPORTS ILeds; /**< LED interface */ 157 R3PTRTYPE(PPDMILEDCONNECTORS) pLedsConnector; 158 159 PPDMDEVINSR3 pDevInsR3; /**< Device instance - R3. */ 160 PPDMDEVINSR0 pDevInsR0; /**< Device instance - R0. */ 161 PPDMDEVINSRC pDevInsRC; /**< Device instance - RC. */ 167 #if HC_ARCH_BITS == 64 168 uint32_t padding1; 169 #endif 170 VirtioDeviceType enmDevType; /**< Device type: net or blk. */ 171 char szInstance[8]; /**< Instance name, e.g. VNet#1. */ 172 173 PDMIBASE IBase; 174 PDMILEDPORTS ILeds; /**< LED interface */ 175 R3PTRTYPE(PPDMILEDCONNECTORS) pLedsConnector; 176 177 PPDMDEVINSR3 pDevInsR3; /**< Device instance - R3. */ 178 PPDMDEVINSR0 pDevInsR0; /**< Device instance - R0. */ 179 PPDMDEVINSRC pDevInsRC; /**< Device instance - RC. */ 180 181 #if HC_ARCH_BITS == 64 182 uint32_t padding2; 183 #endif 162 184 163 185 /** TODO */ 164 PCIDEVICE pciDevice;186 PCIDEVICE pciDevice; 165 187 /** Base port of I/O space region. */ 166 RTIOPORT addrIOPort;188 RTIOPORT addrIOPort; 167 189 168 190 /* Read/write part, protected with critical section. */ 169 191 /** Status LED. */ 170 PDMLED led; 171 172 uint32_t uGuestFeatures; 173 uint16_t uQueueSelector; /**< An index in aQueues array. */ 174 uint8_t uStatus; /**< Device Status (bits are device-specific). */ 175 uint8_t uISR; /**< Interrupt Status Register. */ 176 PVQUEUE pQueues; 192 PDMLED led; 193 194 uint32_t uGuestFeatures; 195 uint16_t uQueueSelector; /**< An index in aQueues array. */ 196 uint8_t uStatus; /**< Device Status (bits are device-specific). */ 197 uint8_t uISR; /**< Interrupt Status Register. */ 198 199 #if HC_ARCH_BITS == 64 200 uint32_t padding3; 201 #endif 202 203 VQUEUE Queues[VIRTIO_MAX_NQUEUES]; 177 204 178 205 #if defined(VBOX_WITH_STATISTICS) 179 STAMPROFILEADV StatIOReadGC;180 STAMPROFILEADV StatIOReadHC;181 STAMPROFILEADV StatIOWriteGC;182 STAMPROFILEADV StatIOWriteHC;183 STAMCOUNTER StatIntsRaised;206 STAMPROFILEADV StatIOReadGC; 207 STAMPROFILEADV StatIOReadHC; 208 STAMPROFILEADV StatIOWriteGC; 209 STAMPROFILEADV StatIOWriteHC; 210 STAMCOUNTER StatIntsRaised; 184 211 #endif /* VBOX_WITH_STATISTICS */ 185 212 }; … … 205 232 /*****************************************************************************/ 206 233 207 struct VirtioPCIDevices 234 #ifndef VBOX_DEVICE_STRUCT_TESTCASE 235 236 #ifdef IN_RING3 237 const struct VirtioPCIDevices 208 238 { 209 239 uint16_t uPCIVendorId; … … 222 252 void (*pfnReset)(void *pvState); 223 253 void (*pfnReady)(void *pvState); 224 #ifdef DEBUG225 const char *(*pfnGetQueueName)(void *pvState, PVQUEUE pQueue);226 #endif /* DEBUG */227 254 } g_VPCIDevices[] = 228 255 { 229 256 /* Vendor Device SSVendor SubSys Class NQ Name Instance */ 230 257 { /* Virtio Network Device */ 231 0x1AF4, 0x1000, 0x1AF4, 1 + VIRTIO_NET_ID, 0x0200, 3, "virtio-net", "vnet%d", 258 0x1AF4, 0x1000, 0x1AF4, 1 + VIRTIO_NET_ID, 0x0200, VIRTIO_NET_NQUEUES, 259 "virtio-net", "vnet%d", 232 260 vnetGetHostFeatures, vnetGetHostMinimalFeatures, vnetSetHostFeatures, 233 261 vnetGetConfig, vnetSetConfig, vnetReset, vnetReady 234 #ifdef DEBUG235 , vnetGetQueueName236 #endif /* DEBUG */237 262 }, 238 263 { /* Virtio Block Device */ 239 264 0x1AF4, 0x1001, 0x1AF4, 1 + VIRTIO_BLK_ID, 0x0180, 2, "virtio-blk", "vblk%d", 240 265 NULL, NULL, NULL, NULL, NULL, NULL, NULL 241 #ifdef DEBUG242 , NULL243 #endif /* DEBUG */244 266 }, 245 267 }; 246 268 #endif 269 270 #endif /* VBOX_DEVICE_STRUCT_TESTCASE */ 247 271 248 272 /*****************************************************************************/ … … 488 512 } 489 513 514 #ifdef IN_RING3 490 515 void vpciReset(PVPCISTATE pState) 491 516 { … … 496 521 497 522 for (unsigned i = 0; i < g_VPCIDevices[pState->enmDevType].nQueues; i++) 498 vqueueReset(&pState->pQueues[i]); 499 } 523 vqueueReset(&pState->Queues[i]); 524 } 525 #endif 500 526 501 527 … … 543 569 } 544 570 571 #ifdef IN_RING3 545 572 DECLINLINE(uint32_t) vpciGetHostFeatures(PVPCISTATE pState) 546 573 { … … 548 575 | VPCI_F_NOTIFY_ON_EMPTY; 549 576 } 577 #endif 550 578 551 579 /** … … 574 602 case VPCI_HOST_FEATURES: 575 603 /* Tell the guest what features we support. */ 604 #ifdef IN_RING3 576 605 *pu32 = vpciGetHostFeatures(pState) | VPCI_F_BAD_FEATURE; 606 #else 607 rc = VINF_IOM_HC_IOPORT_READ; 608 #endif 577 609 break; 578 610 … … 582 614 583 615 case VPCI_QUEUE_PFN: 584 *pu32 = pState-> pQueues[pState->uQueueSelector].uPageNumber;616 *pu32 = pState->Queues[pState->uQueueSelector].uPageNumber; 585 617 break; 586 618 587 619 case VPCI_QUEUE_NUM: 588 620 Assert(cb == 2); 589 *(uint16_t*)pu32 = pState-> pQueues[pState->uQueueSelector].VRing.uSize;621 *(uint16_t*)pu32 = pState->Queues[pState->uQueueSelector].VRing.uSize; 590 622 break; 591 623 … … 609 641 default: 610 642 if (port >= VPCI_CONFIG) 643 { 644 #ifdef IN_RING3 611 645 rc = g_VPCIDevices[pState->enmDevType].pfnGetConfig(pState, port - VPCI_CONFIG, cb, pu32); 646 #else 647 rc = VINF_IOM_HC_IOPORT_READ; 648 #endif 649 } 612 650 else 613 651 { … … 651 689 case VPCI_GUEST_FEATURES: 652 690 /* Check if the guest negotiates properly, fall back to basics if it does not. */ 691 #ifdef IN_RING3 653 692 if (VPCI_F_BAD_FEATURE & u32) 654 693 { … … 667 706 pState->uGuestFeatures = u32; 668 707 g_VPCIDevices[pState->enmDevType].pfnSetHostFeatures(pState, pState->uGuestFeatures); 708 #else 709 rc = VINF_IOM_HC_IOPORT_WRITE; 710 #endif 669 711 break; 670 712 671 713 case VPCI_QUEUE_PFN: 714 #ifdef IN_RING3 672 715 /* 673 716 * The guest is responsible for allocating the pages for queues, … … 676 719 * VIRTIO_PCI_QUEUE_NUM. 677 720 */ 678 pState-> pQueues[pState->uQueueSelector].uPageNumber = u32;721 pState->Queues[pState->uQueueSelector].uPageNumber = u32; 679 722 if (u32) 680 vqueueInit(&pState-> pQueues[pState->uQueueSelector], u32);723 vqueueInit(&pState->Queues[pState->uQueueSelector], u32); 681 724 else 682 725 g_VPCIDevices[pState->enmDevType].pfnReset(pState); 726 #else 727 rc = VINF_IOM_HC_IOPORT_WRITE; 728 #endif 683 729 break; 684 730 685 731 case VPCI_QUEUE_SEL: 732 #ifdef IN_RING3 686 733 Assert(cb == 2); 687 734 u32 &= 0xFFFF; … … 690 737 else 691 738 Log3(("%s virtioIOPortOut: Invalid queue selector %08x\n", szInst, u32)); 739 #else 740 rc = VINF_IOM_HC_IOPORT_WRITE; 741 #endif 692 742 break; 693 743 694 744 case VPCI_QUEUE_NOTIFY: 745 #ifdef IN_RING3 695 746 Assert(cb == 2); 696 747 u32 &= 0xFFFF; 697 748 if (u32 < g_VPCIDevices[pState->enmDevType].nQueues) 698 if (pState-> pQueues[u32].VRing.addrDescriptors)699 pState-> pQueues[u32].pfnCallback(pState, &pState->pQueues[u32]);749 if (pState->Queues[u32].VRing.addrDescriptors) 750 pState->Queues[u32].pfnCallback(pState, &pState->Queues[u32]); 700 751 else 701 752 Log(("%s The queue (#%d) being notified has not been initialized.\n", … … 703 754 else 704 755 Log(("%s Invalid queue number (%d)\n", INSTANCE(pState), u32)); 756 #else 757 rc = VINF_IOM_HC_IOPORT_WRITE; 758 #endif 705 759 break; 706 760 707 761 case VPCI_STATUS: 762 #ifdef IN_RING3 708 763 Assert(cb == 1); 709 764 u32 &= 0xFF; … … 715 770 else if (fHasBecomeReady) 716 771 g_VPCIDevices[pState->enmDevType].pfnReady(pState); 772 #else 773 rc = VINF_IOM_HC_IOPORT_WRITE; 774 #endif 717 775 break; 718 776 719 777 default: 778 #ifdef IN_RING3 720 779 if (port >= VPCI_CONFIG) 721 780 rc = g_VPCIDevices[pState->enmDevType].pfnSetConfig(pState, port - VPCI_CONFIG, cb, &u32); 722 781 else 723 782 rc = PDMDeviceDBGFStop(pDevIns, RT_SRC_POS, "%s virtioIOPortOut: no valid port at offset port=%RTiop cb=%08x\n", szInst, port, cb); 783 #else 784 rc = VINF_IOM_HC_IOPORT_WRITE; 785 #endif 724 786 break; 725 787 } … … 912 974 " uNextUsedIndex = %u\n" 913 975 " uPageNumber = %x\n", 914 g_VPCIDevices[pState->enmDevType].pfnGetQueueName(pState, &pState->pQueues[i]),915 pState-> pQueues[i].VRing.uSize,916 pState-> pQueues[i].VRing.addrDescriptors,917 pState-> pQueues[i].VRing.addrAvail,918 pState-> pQueues[i].VRing.addrUsed,919 pState-> pQueues[i].uNextAvailIndex,920 pState-> pQueues[i].uNextUsedIndex,921 pState-> pQueues[i].uPageNumber));976 pState->Queues[i].pcszName, 977 pState->Queues[i].VRing.uSize, 978 pState->Queues[i].VRing.addrDescriptors, 979 pState->Queues[i].VRing.addrAvail, 980 pState->Queues[i].VRing.addrUsed, 981 pState->Queues[i].uNextAvailIndex, 982 pState->Queues[i].uNextUsedIndex, 983 pState->Queues[i].uPageNumber)); 922 984 923 985 } … … 951 1013 for (unsigned i = 0; i < g_VPCIDevices[pState->enmDevType].nQueues; i++) 952 1014 { 953 rc = SSMR3PutU16(pSSM, pState-> pQueues[i].VRing.uSize);1015 rc = SSMR3PutU16(pSSM, pState->Queues[i].VRing.uSize); 954 1016 AssertRCReturn(rc, rc); 955 rc = SSMR3PutU32(pSSM, pState-> pQueues[i].uPageNumber);1017 rc = SSMR3PutU32(pSSM, pState->Queues[i].uPageNumber); 956 1018 AssertRCReturn(rc, rc); 957 rc = SSMR3PutU16(pSSM, pState-> pQueues[i].uNextAvailIndex);1019 rc = SSMR3PutU16(pSSM, pState->Queues[i].uNextAvailIndex); 958 1020 AssertRCReturn(rc, rc); 959 rc = SSMR3PutU16(pSSM, pState-> pQueues[i].uNextUsedIndex);1021 rc = SSMR3PutU16(pSSM, pState->Queues[i].uNextUsedIndex); 960 1022 AssertRCReturn(rc, rc); 961 1023 } … … 992 1054 for (unsigned i = 0; i < g_VPCIDevices[pState->enmDevType].nQueues; i++) 993 1055 { 994 rc = SSMR3GetU16(pSSM, &pState-> pQueues[i].VRing.uSize);1056 rc = SSMR3GetU16(pSSM, &pState->Queues[i].VRing.uSize); 995 1057 AssertRCReturn(rc, rc); 996 rc = SSMR3GetU32(pSSM, &pState-> pQueues[i].uPageNumber);1058 rc = SSMR3GetU32(pSSM, &pState->Queues[i].uPageNumber); 997 1059 AssertRCReturn(rc, rc); 998 1060 999 if (pState-> pQueues[i].uPageNumber)1000 vqueueInit(&pState-> pQueues[i], pState->pQueues[i].uPageNumber);1001 1002 rc = SSMR3GetU16(pSSM, &pState-> pQueues[i].uNextAvailIndex);1061 if (pState->Queues[i].uPageNumber) 1062 vqueueInit(&pState->Queues[i], pState->Queues[i].uPageNumber); 1063 1064 rc = SSMR3GetU16(pSSM, &pState->Queues[i].uNextAvailIndex); 1003 1065 AssertRCReturn(rc, rc); 1004 rc = SSMR3GetU16(pSSM, &pState-> pQueues[i].uNextUsedIndex);1066 rc = SSMR3GetU16(pSSM, &pState->Queues[i].uNextUsedIndex); 1005 1067 AssertRCReturn(rc, rc); 1006 1068 } … … 1046 1108 pState->enmDevType = enmDevType; 1047 1109 1048 /* Allocate queues */1049 pState->pQueues = (VQUEUE*)RTMemAllocZ(sizeof(VQUEUE) * g_VPCIDevices[enmDevType].nQueues);1050 1051 1110 pState->pDevInsR3 = pDevIns; 1052 1111 pState->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns); … … 1054 1113 pState->led.u32Magic = PDMLED_MAGIC; 1055 1114 1056 pState->ILeds.pfnQueryStatusLed = vpciQueryStatusLed;1115 pState->ILeds.pfnQueryStatusLed = vpciQueryStatusLed; 1057 1116 1058 1117 /* Initialize critical section. */ … … 1104 1163 Log(("%s Destroying PCI instance\n", INSTANCE(pState))); 1105 1164 1106 if (pState->pQueues)1107 RTMemFree(pState->pQueues);1108 1109 1165 if (PDMCritSectIsInitialized(&pState->cs)) 1110 {1111 1166 PDMR3CritSectDelete(&pState->cs); 1112 }1167 1113 1168 return VINF_SUCCESS; 1114 1169 } … … 1138 1193 1139 1194 PVQUEUE vpciAddQueue(VPCISTATE* pState, unsigned uSize, 1140 void (*pfnCallback)(void *pvState, PVQUEUE pQueue)) 1195 void (*pfnCallback)(void *pvState, PVQUEUE pQueue), 1196 const char *pcszName) 1141 1197 { 1142 1198 PVQUEUE pQueue = NULL; … … 1144 1200 for (unsigned i = 0; i < g_VPCIDevices[pState->enmDevType].nQueues; i++) 1145 1201 { 1146 if (pState-> pQueues[i].VRing.uSize == 0)1202 if (pState->Queues[i].VRing.uSize == 0) 1147 1203 { 1148 pQueue = &pState-> pQueues[i];1204 pQueue = &pState->Queues[i]; 1149 1205 break; 1150 1206 } … … 1161 1217 pQueue->uPageNumber = 0; 1162 1218 pQueue->pfnCallback = pfnCallback; 1219 pQueue->pcszName = pcszName; 1163 1220 } 1164 1221 … … 1169 1226 #endif /* IN_RING3 */ 1170 1227 1228 #endif /* VBOX_DEVICE_STRUCT_TESTCASE */ 1171 1229 1172 1230 //------------------------- Tear off here: vnet ------------------------------- … … 1229 1287 RCPTRTYPE(PPDMQUEUE) pCanRxQueueRC; /**< Rx wakeup signaller - RC. */ 1230 1288 1289 #if HC_ARCH_BITS == 64 1290 uint32_t padding; 1291 #endif 1231 1292 PTMTIMERR3 pLinkUpTimer; /**< Link Up(/Restore) Timer. */ 1232 1293 … … 1244 1305 bool fLocked; 1245 1306 1246 PVQUEUE pRxQueue;1247 PVQUEUE pTxQueue;1248 PVQUEUE pCtlQueue;1249 /* Receive-blocking-related fields ***************************************/1250 1251 1307 /** N/A: */ 1252 1308 bool volatile fMaybeOutOfSpace; 1309 1310 R3PTRTYPE(PVQUEUE) pRxQueue; 1311 R3PTRTYPE(PVQUEUE) pTxQueue; 1312 R3PTRTYPE(PVQUEUE) pCtlQueue; 1313 /* Receive-blocking-related fields ***************************************/ 1314 1253 1315 /** EMT: Gets signalled when more RX descriptors become available. */ 1254 1316 RTSEMEVENT hEventMoreRxDescAvail; … … 1270 1332 typedef VNETSTATE *PVNETSTATE; 1271 1333 1334 #ifndef VBOX_DEVICE_STRUCT_TESTCASE 1335 1272 1336 #define VNETHDR_GSO_NONE 0 1273 1337 … … 1294 1358 #define STATUS pState->config.uStatus 1295 1359 1296 #ifdef DEBUG1297 static const char *vnetGetQueueName(void *pvState, PVQUEUE pQueue)1298 {1299 VNETSTATE *pState = (VNETSTATE *)pvState;1300 if (pQueue == pState->pRxQueue)1301 return "RX ";1302 else if (pQueue == pState->pTxQueue)1303 return "TX ";1304 else if (pQueue == pState->pCtlQueue)1305 return "CTL";1306 return "Invalid";1307 }1308 #endif /* DEBUG */1309 1310 1360 DECLINLINE(int) vnetCsEnter(PVNETSTATE pState, int rcBusy) 1311 1361 { … … 1361 1411 } 1362 1412 1413 #ifdef IN_RING3 1363 1414 /** 1364 1415 * Hardware reset. Revert all registers to initial values. … … 1378 1429 } 1379 1430 1380 #ifdef IN_RING31381 1431 /** 1382 1432 * Wakeup the RX thread. … … 1960 2010 pState->VPCI.IBase.pfnQueryInterface = vnetQueryInterface; 1961 2011 rc = vpciConstruct(pDevIns, &pState->VPCI, iInstance, VIRTIO_NET_ID, sizeof(VNetPCIConfig)); 1962 pState->pRxQueue = vpciAddQueue(&pState->VPCI, 256, vnetQueueReceive );1963 pState->pTxQueue = vpciAddQueue(&pState->VPCI, 256, vnetQueueTransmit );1964 pState->pCtlQueue = vpciAddQueue(&pState->VPCI, 16, vnetQueueControl );2012 pState->pRxQueue = vpciAddQueue(&pState->VPCI, 256, vnetQueueReceive, "RX "); 2013 pState->pTxQueue = vpciAddQueue(&pState->VPCI, 256, vnetQueueTransmit, "TX "); 2014 pState->pCtlQueue = vpciAddQueue(&pState->VPCI, 16, vnetQueueControl, "CTL"); 1965 2015 1966 2016 Log(("%s Constructing new instance\n", INSTANCE(pState))); -
trunk/src/VBox/Devices/testcase/Makefile.kmk
r23452 r24616 61 61 tstDeviceStructSizeGC_DEFS += VBOX_WITH_E1000 62 62 endif 63 ifdef VBOX_WITH_VIRTIO 64 tstDeviceStructSizeGC_DEFS += VBOX_WITH_VIRTIO 65 endif 63 66 ifdef VBOX_WITH_BUSLOGIC 64 67 tstDeviceStructSizeGC_DEFS += VBOX_WITH_BUSLOGIC … … 99 102 ifdef VBOX_WITH_E1000 100 103 tstDeviceStructSize_DEFS += VBOX_WITH_E1000 104 endif 105 ifdef VBOX_WITH_VIRTIO 106 tstDeviceStructSize_DEFS += VBOX_WITH_VIRTIO 101 107 endif 102 108 ifdef VBOX_WITH_BUSLOGIC -
trunk/src/VBox/Devices/testcase/tstDeviceStructSize.cpp
r23814 r24616 43 43 #ifdef VBOX_WITH_VIRTIO 44 44 # undef LOG_GROUP 45 # include "../Network/DevVirtio .cpp"45 # include "../Network/DevVirtioNet.cpp" 46 46 #endif 47 47 #undef LOG_GROUP … … 308 308 #ifdef VBOX_WITH_VIRTIO 309 309 CHECK_MEMBER_ALIGNMENT(VPCISTATE, cs, 8); 310 CHECK_MEMBER_ALIGNMENT(VPCISTATE, led, 4); 311 CHECK_MEMBER_ALIGNMENT(VPCISTATE, Queues, 8); 310 312 #endif 311 313 -
trunk/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp
r24173 r24616 77 77 # undef LOG_GROUP 78 78 # include "../Network/DevE1000.cpp" 79 #endif 80 #ifdef VBOX_WITH_VIRTIO 81 # undef LOG_GROUP 82 # include "../Network/DevVirtioNet.cpp" 79 83 #endif 80 84 #ifdef VBOX_WITH_BUSLOGIC … … 1331 1335 #endif /* VBOX_WITH_E1000 */ 1332 1336 1337 #ifdef VBOX_WITH_VIRTIO 1338 GEN_CHECK_OFF(VPCISTATE, cs); 1339 GEN_CHECK_OFF(VPCISTATE, enmDevType); 1340 GEN_CHECK_OFF(VPCISTATE, szInstance); 1341 GEN_CHECK_OFF(VPCISTATE, IBase); 1342 GEN_CHECK_OFF(VPCISTATE, ILeds); 1343 GEN_CHECK_OFF(VPCISTATE, pLedsConnector); 1344 GEN_CHECK_OFF(VPCISTATE, pDevInsR3); 1345 GEN_CHECK_OFF(VPCISTATE, pDevInsR0); 1346 GEN_CHECK_OFF(VPCISTATE, pDevInsRC); 1347 GEN_CHECK_OFF(VPCISTATE, pciDevice); 1348 GEN_CHECK_OFF(VPCISTATE, addrIOPort); 1349 GEN_CHECK_OFF(VPCISTATE, led); 1350 GEN_CHECK_OFF(VPCISTATE, uGuestFeatures); 1351 GEN_CHECK_OFF(VPCISTATE, uQueueSelector); 1352 GEN_CHECK_OFF(VPCISTATE, uStatus); 1353 GEN_CHECK_OFF(VPCISTATE, uISR); 1354 GEN_CHECK_OFF(VPCISTATE, Queues); 1355 GEN_CHECK_OFF(VPCISTATE, Queues[VIRTIO_MAX_NQUEUES]); 1356 GEN_CHECK_OFF(VNETSTATE, VPCI); 1357 GEN_CHECK_OFF(VNETSTATE, INetworkPort); 1358 GEN_CHECK_OFF(VNETSTATE, INetworkConfig); 1359 GEN_CHECK_OFF(VNETSTATE, pDrvBase); 1360 GEN_CHECK_OFF(VNETSTATE, pCanRxQueueR3); 1361 GEN_CHECK_OFF(VNETSTATE, pCanRxQueueR0); 1362 GEN_CHECK_OFF(VNETSTATE, pCanRxQueueRC); 1363 GEN_CHECK_OFF(VNETSTATE, pLinkUpTimer); 1364 GEN_CHECK_OFF(VNETSTATE, config); 1365 GEN_CHECK_OFF(VNETSTATE, macConfigured); 1366 GEN_CHECK_OFF(VNETSTATE, fCableConnected); 1367 GEN_CHECK_OFF(VNETSTATE, u32PktNo); 1368 GEN_CHECK_OFF(VNETSTATE, fLocked); 1369 GEN_CHECK_OFF(VNETSTATE, pRxQueue); 1370 GEN_CHECK_OFF(VNETSTATE, pTxQueue); 1371 GEN_CHECK_OFF(VNETSTATE, pCtlQueue); 1372 GEN_CHECK_OFF(VNETSTATE, fMaybeOutOfSpace); 1373 GEN_CHECK_OFF(VNETSTATE, hEventMoreRxDescAvail); 1374 #endif /* VBOX_WITH_VIRTIO */ 1375 1333 1376 #ifdef VBOX_WITH_SCSI 1334 1377 GEN_CHECK_SIZE(VBOXSCSI);
Note:
See TracChangeset
for help on using the changeset viewer.

