Changeset 86426 in vbox
- Timestamp:
- Oct 2, 2020 3:47:58 PM (4 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/PDM.cpp
r84493 r86426 884 884 * Free modules. 885 885 */ 886 pdmR3LdrTermU(pVM->pUVM );886 pdmR3LdrTermU(pVM->pUVM, false /*fFinal*/); 887 887 888 888 /* … … 916 916 * the first time, which is why we do it. 917 917 */ 918 pdmR3LdrTermU(pUVM );918 pdmR3LdrTermU(pUVM, true /*fFinal*/); 919 919 920 920 Assert(pUVM->pdm.s.pCritSects == NULL); -
trunk/src/VBox/VMM/VMMR3/PDMLdr.cpp
r82968 r86426 122 122 * 123 123 * @param pUVM The user mode VM structure. 124 * @param fFinal This is clear when in the PDMR3Term/vmR3Destroy call 125 * chain, and set when called from PDMR3TermUVM. 124 126 * 125 127 * @remarks This is normally called twice during termination. 126 128 */ 127 void pdmR3LdrTermU(PUVM pUVM )129 void pdmR3LdrTermU(PUVM pUVM, bool fFinal) 128 130 { 129 131 /* … … 147 149 { 148 150 case PDMMOD_TYPE_R0: 149 { 150 Assert(pModule->ImageBase); 151 int rc2 = SUPR3FreeModule((void *)(uintptr_t)pModule->ImageBase); 152 AssertRC(rc2); 153 pModule->ImageBase = 0; 154 break; 155 } 151 if (fFinal) 152 { 153 Assert(pModule->ImageBase); 154 int rc2 = SUPR3FreeModule((void *)(uintptr_t)pModule->ImageBase); 155 AssertRC(rc2); 156 pModule->ImageBase = 0; 157 break; 158 } 159 160 /* Postpone ring-0 module till the PDMR3TermUVM() phase as VMMR0.r0 is still 161 busy when we're called the first time very very early in vmR3Destroy(). */ 162 pModule = pModule->pNext; 163 continue; 156 164 157 165 #ifdef VBOX_WITH_RAW_MODE_KEEP -
trunk/src/VBox/VMM/include/PDMInternal.h
r85126 r86426 1608 1608 1609 1609 int pdmR3LdrInitU(PUVM pUVM); 1610 void pdmR3LdrTermU(PUVM pUVM );1610 void pdmR3LdrTermU(PUVM pUVM, bool fFinal); 1611 1611 char *pdmR3FileR3(const char *pszFile, bool fShared); 1612 1612 int pdmR3LoadR3U(PUVM pUVM, const char *pszFilename, const char *pszName);
Note:
See TracChangeset
for help on using the changeset viewer.