VirtualBox

Ignore:
Timestamp:
Dec 9, 2009 4:37:00 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
55820
Message:

SUPDrv: Major IOC version change - preparing to use the native ring-0 loader on windwos.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/SUPLib.cpp

    r25263 r25278  
    272272        strcpy(CookieReq.u.In.szMagic, SUPCOOKIE_MAGIC);
    273273        CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION;
    274 #ifdef VBOX_WITH_NATIVE_R0_LOADER
    275274        const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00120000
    276275                                   ?  0x00120000
    277276                                   :  SUPDRV_IOC_VERSION & 0xffff0000;
    278 #else
    279        const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00100001
    280                                        ?  0x00100001
    281                                    :  SUPDRV_IOC_VERSION & 0xffff0000;
    282 #endif
    283277        CookieReq.u.In.u32MinVersion = uMinVersion;
    284278        rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_COOKIE, &CookieReq, SUP_IOCTL_COOKIE_SIZE);
     
    14981492    if (    pszModule
    14991493        &&  *pszModule
    1500 #if defined(VBOX_WITH_NATIVE_R0_LOADER) && defined(RT_OS_WINDOWS)
    15011494        &&  strcmp(pszModule, "VBoxDrv.sys")
    1502 #else
    1503         &&  strcmp(pszModule, "SUPR0.dll")
    1504 #endif
    15051495        &&  strcmp(pszModule, "VMMR0.r0"))
    15061496    {
     
    15211511     * Lookup symbol.
    15221512     */
     1513    /** @todo is this actually used??? */
    15231514    /* skip the 64-bit ELF import prefix first. */
    15241515    if (!strncmp(pszSymbol, "SUPR0$", sizeof("SUPR0$") - 1))
     
    15561547     * The GIP.
    15571548     */
    1558     /** @todo R0 mapping? */
    15591549    if (    pszSymbol
    15601550        &&  g_pSUPGlobalInfoPage
    15611551        &&  g_pSUPGlobalInfoPageR0
    1562         &&  !strcmp(pszSymbol, "g_SUPGlobalInfoPage"))
     1552        &&  !strcmp(pszSymbol, "g_SUPGlobalInfoPage")
     1553       )
    15631554    {
    15641555        *pValue = (uintptr_t)g_pSUPGlobalInfoPageR0;
     
    16631654    AssertPtrReturn(ppvImageBase, VERR_INVALID_PARAMETER);
    16641655    AssertReturn(strlen(pszModule) < RT_SIZEOFMEMB(SUPLDROPEN, u.In.szName), VERR_FILENAME_TOO_LONG);
    1665 #ifdef VBOX_WITH_NATIVE_R0_LOADER
    16661656    char szAbsFilename[RT_SIZEOFMEMB(SUPLDROPEN, u.In.szFilename)];
    16671657    rc = RTPathAbs(pszFilename, szAbsFilename, sizeof(szAbsFilename));
     
    16691659        return rc;
    16701660    pszFilename = szAbsFilename;
    1671 #endif
    16721661
    16731662    const bool fIsVMMR0 = !strcmp(pszModule, "VMMR0.r0");
     
    17051694        OpenReq.Hdr.rc = VERR_INTERNAL_ERROR;
    17061695        OpenReq.u.In.cbImageWithTabs = cbImageWithTabs;
    1707 #ifdef VBOX_WITH_NATIVE_R0_LOADER
    17081696        OpenReq.u.In.cbImageBits = (uint32_t)CalcArgs.cbImage;
    1709 #endif
    17101697        strcpy(OpenReq.u.In.szName, pszModule);
    1711 #ifdef VBOX_WITH_NATIVE_R0_LOADER
    17121698        strcpy(OpenReq.u.In.szFilename, pszFilename);
    1713 #endif
    17141699        if (!g_u32FakeMode)
    17151700        {
     
    18201805                            pLoadReq->u.In.cbStrTab                   = (uint32_t)CalcArgs.cbStrings;
    18211806                            AssertRelease(pLoadReq->u.In.cbStrTab == CalcArgs.cbStrings);
    1822 #ifdef VBOX_WITH_NATIVE_R0_LOADER
    18231807                            pLoadReq->u.In.cbImageBits                = (uint32_t)CalcArgs.cbImage;
    1824 #endif
    18251808                            pLoadReq->u.In.offSymbols                 = offSymTab;
    18261809                            pLoadReq->u.In.cSymbols                   = CalcArgs.cSymbols;
     
    18391822                               )
    18401823                            {
    1841                                 LogRel(("SUP: Loaded %s (%s) at %#p - ModuleInit at %RTptr and ModuleTerm at %RTptr\n", pszModule, pszFilename,
    1842                                         OpenReq.u.Out.pvImageBase, ModuleInit, ModuleTerm));
     1824                                LogRel(("SUP: Loaded %s (%s) at %#p - ModuleInit at %RTptr and ModuleTerm at %RTptr%s\n",
     1825                                        pszModule, pszFilename, OpenReq.u.Out.pvImageBase, ModuleInit, ModuleTerm,
     1826                                        OpenReq.u.Out.fNativeLoader ? " using the native ring-0 loader" : ""));
    18431827                                if (fIsVMMR0)
    18441828                                {
     
    18701854            if (fIsVMMR0)
    18711855                g_pvVMMR0 = OpenReq.u.Out.pvImageBase;
    1872             LogRel(("SUP: Opened %s (%s) at %#p.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase));
     1856            LogRel(("SUP: Opened %s (%s) at %#p.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase,
     1857                    OpenReq.u.Out.fNativeLoader ? " loaded by the native ring-0 loader" : ""));
    18731858#ifdef RT_OS_WINDOWS
    18741859            LogRel(("SUP: windbg> .reload /f %s=%#p\n", pszFilename, OpenReq.u.Out.pvImageBase));
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