VirtualBox

Ignore:
Timestamp:
Apr 16, 2009 11:36:10 PM (16 years ago)
Author:
vboxsync
Message:

memobj-r0drv-freebsd.c: nitpicking...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c

    r18960 r18970  
    4444#include "internal/memobj.h"
    4545
     46
    4647/*******************************************************************************
    4748*   Structures and Typedefs                                                    *
     
    152153
    153154            rc = vm_map_remove(pMap,
    154                                 (vm_offset_t)pMemFreeBSD->Core.pv,
    155                                 (vm_offset_t)pMemFreeBSD->Core.pv + pMemFreeBSD->Core.cb);
     155                               (vm_offset_t)pMemFreeBSD->Core.pv,
     156                               (vm_offset_t)pMemFreeBSD->Core.pv + pMemFreeBSD->Core.cb);
    156157            AssertMsg(rc == KERN_SUCCESS, ("%#x", rc));
    157158            break;
     
    557558}
    558559
     560
    559561/* see http://markmail.org/message/udhq33tefgtyfozs */
    560562int rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, RTR3PTR R3PtrFixed, size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process)
     
    563565    AssertMsgReturn(R3PtrFixed == (RTR3PTR)-1, ("%p\n", R3PtrFixed), VERR_NOT_SUPPORTED);
    564566
    565     int rc;
    566     vm_object_t pObjectToMap = ((PRTR0MEMOBJFREEBSD)pMemToMap)->pObject;
    567     struct proc   *pProc     = (struct proc *)R0Process;
    568     struct vm_map *pProcMap  = &pProc->p_vmspace->vm_map;
    569     vm_offset_t AddrR3 = 0;
    570     vm_prot_t   ProtectionFlags = 0;
    571 
     567    int             rc;
     568    vm_object_t     pObjectToMap = ((PRTR0MEMOBJFREEBSD)pMemToMap)->pObject;
     569    struct proc    *pProc     = (struct proc *)R0Process;
     570    struct vm_map  *pProcMap  = &pProc->p_vmspace->vm_map;
     571
     572    /* calc protection */
     573    vm_prot_t       ProtectionFlags = 0;
    572574    if ((fProt & RTMEM_PROT_NONE) == RTMEM_PROT_NONE)
    573575        ProtectionFlags = VM_PROT_NONE;
     
    579581        ProtectionFlags |= VM_PROT_EXECUTE;
    580582
     583    /* calc mapping address */
    581584    PROC_LOCK(pProc);
    582     AddrR3 = round_page((vm_offset_t)pProc->p_vmspace->vm_daddr + lim_max(pProc, RLIMIT_DATA));
     585    vm_offset_t AddrR3 = round_page((vm_offset_t)pProc->p_vmspace->vm_daddr + lim_max(pProc, RLIMIT_DATA));
    583586    PROC_UNLOCK(pProc);
    584587
     
    604607            if (rc == KERN_SUCCESS)
    605608            {
    606                 int            cPages = pMemToMap->cb >> PAGE_SHIFT;
    607                 int            iPage;
    608                 void          *AddrToMap    = pMemToMap->pv;
     609                size_t         cLeft        = pMemToMap->cb >> PAGE_SHIFT;
     610                vm_offset_t    AddrToMap    = (vm_offset_t)pMemToMap->pv;
    609611                pmap_t         pPhysicalMap = pProcMap->pmap;
    610                 vm_offset_t    AddrR3Dest   = AddrR3;
     612                vm_offset_t    AddrR3Dst    = AddrR3;
    611613
    612614                /* Insert the memory page by page into the mapping. */
    613                 for (iPage = 0; iPage < cPages; iPage++)
     615                while (cLeft-- > 0)
    614616                {
    615617                    vm_page_t Page = PHYS_TO_VM_PAGE(vtophys(AddrToMap));
    616618
    617                     pmap_enter(pPhysicalMap, AddrR3Dest, Page, ProtectionFlags, TRUE);
    618                     AddrToMap   = (uint8_t *)AddrToMap + PAGE_SIZE;
    619                     AddrR3Dest += PAGE_SIZE;
     619                    pmap_enter(pPhysicalMap, AddrR3Dst, Page, ProtectionFlags, TRUE);
     620                    AddrToMap += PAGE_SIZE;
     621                    AddrR3Dst += PAGE_SIZE;
    620622                }
    621623                pObjectToMap = pObjectNew;
     
    632634    else
    633635    {
    634         /* 
     636        /*
    635637         * Reference the object. If this isn't done the object will removed from kernel space
    636638         * if the mapping is destroyed.
     
    655657         */
    656658        PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(RTR0MEMOBJFREEBSD),
    657                                                                            RTR0MEMOBJTYPE_MAPPING, 
     659                                                                           RTR0MEMOBJTYPE_MAPPING,
    658660                                                                           (void *)AddrR3,
    659661                                                                           pMemToMap->cb);
    660662        if (pMemFreeBSD)
    661663        {
    662             Assert(pMemFreeBSD->Core.pv == (void *)AddrR3);
     664            Assert((vm_offset_t)pMemFreeBSD->Core.pv == AddrR3);
    663665            pMemFreeBSD->Core.u.Mapping.R0Process = R0Process;
    664666            pMemFreeBSD->pMappingObject = pObjectToMap;
     
    685687    {
    686688        case RTR0MEMOBJTYPE_LOCK:
    687         {
    688689            if (    pMemFreeBSD->Core.u.Lock.R0Process != NIL_RTR0PROCESS
    689690                &&  pMemFreeBSD->Core.u.Lock.R0Process != (RTR0PROCESS)curproc)
     
    692693                return NIL_RTHCPHYS;
    693694            }
    694         }
     695            /* fall thru*/
    695696        case RTR0MEMOBJTYPE_PAGE:
    696697        case RTR0MEMOBJTYPE_MAPPING:
    697698        {
    698             uint8_t *pb = (uint8_t *)pMemFreeBSD->Core.pv + ((size_t)iPage << PAGE_SHIFT);
     699            uint8_t *pb = (uint8_t *)pMemFreeBSD->Core.pv + (iPage << PAGE_SHIFT);
    699700            return vtophys(pb);
    700701        }
     
    713714    }
    714715}
     716
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