VirtualBox

Changeset 81961 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Nov 18, 2019 7:06:25 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
134758
Message:

DevHPET,PDM: Split structures and refactored registration. bugref:9218

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp

    r81938 r81961  
    11891189    *ppIoApicHlp = &g_pdmR0IoApicHlp;
    11901190    LogFlow(("pdmR0DevHlp_IoApicSetUpContext: caller='%s'/%d: returns %Rrc\n", pDevIns->pReg->szName, pDevIns->iInstance, VINF_SUCCESS));
     1191    return VINF_SUCCESS;
     1192}
     1193
     1194
     1195/** @interface_method_impl{PDMDEVHLPR0,pfnHpetSetUpContext} */
     1196static DECLCALLBACK(int) pdmR0DevHlp_HpetSetUpContext(PPDMDEVINS pDevIns, PPDMHPETREG pHpetReg, PCPDMHPETHLPR0 *ppHpetHlp)
     1197{
     1198    PDMDEV_ASSERT_DEVINS(pDevIns);
     1199    LogFlow(("pdmR0DevHlp_HpetSetUpContext: caller='%s'/%d: pHpetReg=%p:{.u32Version=%#x, } ppHpetHlp=%p\n",
     1200             pDevIns->pReg->szName, pDevIns->iInstance, pHpetReg, pHpetReg->u32Version, ppHpetHlp));
     1201    PGVM pGVM = pDevIns->Internal.s.pGVM;
     1202
     1203    /*
     1204     * Validate input.
     1205     */
     1206    AssertMsgReturn(pHpetReg->u32Version == PDM_HPETREG_VERSION,
     1207                    ("%s/%d: u32Version=%#x expected %#x\n", pDevIns->pReg->szName, pDevIns->iInstance, pHpetReg->u32Version, PDM_HPETREG_VERSION),
     1208                    VERR_VERSION_MISMATCH);
     1209    AssertPtrReturn(ppHpetHlp, VERR_INVALID_POINTER);
     1210
     1211    VM_ASSERT_STATE_RETURN(pGVM, VMSTATE_CREATING, VERR_WRONG_ORDER);
     1212    VM_ASSERT_EMT0_RETURN(pGVM, VERR_VM_THREAD_NOT_EMT);
     1213
     1214    /* Check that it's the same device as made the ring-3 registrations: */
     1215    AssertLogRelMsgReturn(pGVM->pdm.s.pHpet == pDevIns->pDevInsForR3, ("%p vs %p\n", pGVM->pdm.s.pHpet, pDevIns->pDevInsForR3),
     1216                          VERR_NOT_OWNER);
     1217
     1218    ///* Check that it isn't already registered in ring-0: */
     1219    //AssertLogRelMsgReturn(pGVM->pdm.s.Hpet.pDevInsR0 == NULL, ("%p (caller pDevIns=%p)\n", pGVM->pdm.s.Hpet.pDevInsR0, pDevIns),
     1220    //                      VERR_ALREADY_EXISTS);
     1221
     1222    /*
     1223     * Nothing to take down here at present.
     1224     */
     1225    Log(("PDM: Registered HPET device '%s'/%d pDevIns=%p\n", pDevIns->pReg->szName, pDevIns->iInstance, pDevIns));
     1226
     1227    /* set the helper pointer and return. */
     1228    *ppHpetHlp = &g_pdmR0HpetHlp;
     1229    LogFlow(("pdmR0DevHlp_HpetSetUpContext: caller='%s'/%d: returns %Rrc\n", pDevIns->pReg->szName, pDevIns->iInstance, VINF_SUCCESS));
    11911230    return VINF_SUCCESS;
    11921231}
     
    12721311    pdmR0DevHlp_PICSetUpContext,
    12731312    pdmR0DevHlp_IoApicSetUpContext,
     1313    pdmR0DevHlp_HpetSetUpContext,
    12741314    NULL /*pfnReserved1*/,
    12751315    NULL /*pfnReserved2*/,
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette