VirtualBox

Changeset 4132 in vbox for trunk/src/VBox/HostDrivers


Ignore:
Timestamp:
Aug 13, 2007 4:11:06 PM (17 years ago)
Author:
vboxsync
Message:

USB_NEW_OS_INTERFACE_FOR_LOW (prep)

Location:
trunk/src/VBox/HostDrivers/Support
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/SUPDRV.h

    r4071 r4132  
    2828#include <iprt/asm.h>
    2929#include <VBox/sup.h>
    30 #ifdef USE_NEW_OS_INTERFACE
     30#if defined(USE_NEW_OS_INTERFACE) || defined(USB_NEW_OS_INTERFACE_FOR_LOW)
    3131# include <iprt/memobj.h>
    3232# include <iprt/time.h>
     
    424424#endif
    425425        } mem;
     426#if defined(USB_NEW_OS_INTERFACE_FOR_LOW)
     427        struct
     428        {
     429            /** The memory object handle. */
     430            RTR0MEMOBJ          MemObj;
     431            /** The ring-3 mapping memory object handle. */
     432            RTR0MEMOBJ          MapObjR3;
     433        } iprt;
     434#endif
    426435    } u;
    427436#endif /* !USE_NEW_OS_INTERFACE */
  • trunk/src/VBox/HostDrivers/Support/SUPDRVShared.c

    r4071 r4132  
    38633863int VBOXCALL supdrvOSLowAllocOne(PSUPDRVMEMREF pMem, PRTR0PTR ppvR0, PRTR3PTR ppvR3, PSUPPAGE paPagesOut)
    38643864{
     3865#if defined(USB_NEW_OS_INTERFACE_FOR_LOW)  /* a temp hack */
     3866    int rc = RTR0MemObjAllocLow(&pMem->u.iprt.MemObj, pMem->cb, true /* executable ring-0 mapping */);
     3867    if (RT_SUCCESS(rc))
     3868    {
     3869        int rc2;
     3870        rc = RTR0MemObjMapUser(&pMem->u.iprt.MapObjR3, pMem->u.iprt.MemObj, (void *)-1, 0,
     3871                               RTMEM_PROT_EXEC | RTMEM_PROT_WRITE | RTMEM_PROT_READ, RTR0ProcHandleSelf());
     3872        if (RT_SUCCESS(rc))
     3873        {
     3874            pMem->eType = MEMREF_TYPE_LOW;
     3875            pMem->pvR0 = RTR0MemObjAddress(pMem->u.iprt.MemObj);
     3876            pMem->pvR3 = (RTR3PTR)RTR0MemObjAddress(pMem->u.iprt.MapObjR3);
     3877            if (!rc)
     3878            {
     3879                size_t  cPages = pMem->cb >> PAGE_SHIFT;
     3880                size_t  iPage;
     3881                for (iPage = 0; iPage < cPages; iPage++)
     3882                {
     3883                    paPagesOut[iPage].Phys = RTR0MemObjGetPagePhysAddr(pMem->u.iprt.MemObj, iPage);
     3884                    paPagesOut[iPage].uReserved = 0;
     3885                    AssertMsg(!(paPagesOut[iPage].Phys & (PAGE_SIZE - 1)), ("iPage=%d Phys=%VHp\n", paPagesOut[iPage].Phys));
     3886                }
     3887                *ppvR0 = RTR0MemObjAddress(pMem->u.iprt.MemObj);
     3888                *ppvR3 = (RTR3PTR)RTR0MemObjAddress(pMem->u.iprt.MapObjR3);
     3889                return 0;
     3890            }
     3891
     3892            rc2 = RTR0MemObjFree(pMem->u.iprt.MapObjR3, false);
     3893            AssertRC(rc2);
     3894        }
     3895
     3896        rc2 = RTR0MemObjFree(pMem->u.iprt.MemObj, false);
     3897        AssertRC(rc2);
     3898    }
     3899#else
    38653900    RTHCPHYS HCPhys;
    38663901    int rc = supdrvOSContAllocOne(pMem, ppvR0, ppvR3, &HCPhys);
     
    38753910    }
    38763911    return rc;
     3912#endif
    38773913}
    38783914
     
    38843920 */
    38853921void VBOXCALL supdrvOSLowFreeOne(PSUPDRVMEMREF pMem)
    3886 {
     3922{                               
     3923# if defined(USB_NEW_OS_INTERFACE_FOR_LOW)
     3924    if (pMem->u.iprt.MapObjR3)
     3925    {
     3926        int rc = RTR0MemObjFree(pMem->u.iprt.MapObjR3, false);
     3927        AssertRC(rc); /** @todo figure out how to handle this. */
     3928    }
     3929    if (pMem->u.iprt.MemObj)
     3930    {
     3931        int rc = RTR0MemObjFree(pMem->u.iprt.MemObj, false);
     3932        AssertRC(rc); /** @todo figure out how to handle this. */
     3933    }
     3934# else
    38873935    supdrvOSContFreeOne(pMem);
     3936# endif
    38883937}
    38893938#endif /* !SUPDRV_OS_HAVE_LOW */
Note: See TracChangeset for help on using the changeset viewer.

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