VirtualBox

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


Ignore:
Timestamp:
Nov 20, 2019 5:22:21 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
134843
Message:

APIC,PDM: Split up APIC 'registration'. bugref:9218

File:
1 edited

Legend:

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

    r81961 r82039  
    11401140    *ppPicHlp = &g_pdmR0PicHlp;
    11411141    LogFlow(("pdmR0DevHlp_PICSetUpContext: caller='%s'/%d: returns %Rrc\n", pDevIns->pReg->szName, pDevIns->iInstance, VINF_SUCCESS));
     1142    return VINF_SUCCESS;
     1143}
     1144
     1145
     1146/** @interface_method_impl{PDMDEVHLPR0,pfnApicSetUpContext} */
     1147static DECLCALLBACK(int) pdmR0DevHlp_ApicSetUpContext(PPDMDEVINS pDevIns)
     1148{
     1149    PDMDEV_ASSERT_DEVINS(pDevIns);
     1150    LogFlow(("pdmR0DevHlp_ApicSetUpContext: caller='%s'/%d:\n", pDevIns->pReg->szName, pDevIns->iInstance));
     1151    PGVM pGVM = pDevIns->Internal.s.pGVM;
     1152
     1153    /*
     1154     * Validate input.
     1155     */
     1156    VM_ASSERT_STATE_RETURN(pGVM, VMSTATE_CREATING, VERR_WRONG_ORDER);
     1157    VM_ASSERT_EMT0_RETURN(pGVM, VERR_VM_THREAD_NOT_EMT);
     1158
     1159    /* Check that it's the same device as made the ring-3 registrations: */
     1160    AssertLogRelMsgReturn(pGVM->pdm.s.Apic.pDevInsR3 == pDevIns->pDevInsForR3,
     1161                          ("%p vs %p\n", pGVM->pdm.s.Apic.pDevInsR3, pDevIns->pDevInsForR3), VERR_NOT_OWNER);
     1162
     1163    /* Check that it isn't already registered in ring-0: */
     1164    AssertLogRelMsgReturn(pGVM->pdm.s.Apic.pDevInsR0 == NULL, ("%p (caller pDevIns=%p)\n", pGVM->pdm.s.Apic.pDevInsR0, pDevIns),
     1165                          VERR_ALREADY_EXISTS);
     1166
     1167    /*
     1168     * Take down the instance.
     1169     */
     1170    pGVM->pdm.s.Apic.pDevInsR0 = pDevIns;
     1171    Log(("PDM: Registered APIC device '%s'/%d pDevIns=%p\n", pDevIns->pReg->szName, pDevIns->iInstance, pDevIns));
     1172
     1173    /* set the helper pointer and return. */
     1174    LogFlow(("pdmR0DevHlp_ApicSetUpContext: caller='%s'/%d: returns %Rrc\n", pDevIns->pReg->szName, pDevIns->iInstance, VINF_SUCCESS));
    11421175    return VINF_SUCCESS;
    11431176}
     
    13101343    pdmR0DevHlp_PCIBusSetUpContext,
    13111344    pdmR0DevHlp_PICSetUpContext,
     1345    pdmR0DevHlp_ApicSetUpContext,
    13121346    pdmR0DevHlp_IoApicSetUpContext,
    13131347    pdmR0DevHlp_HpetSetUpContext,
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