VirtualBox

Changeset 40977 in vbox


Ignore:
Timestamp:
Apr 18, 2012 4:09:05 PM (12 years ago)
Author:
vboxsync
Message:

Runtime/r0drv/solaris: minor cleanup.

File:
1 edited

Legend:

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

    r40972 r40977  
    9797
    9898/**
    99  * Returns the physical address of a page from an array of pages.
    100  *
    101  * @param ppPages       The array of pages.
    102  * @param iPage         Index of the page in the array to get the physical
    103  *                      address.
    104  *
    105  * @returns Physical address of specific page within the list of pages specified
    106  *         in @a ppPages.
    107  */
    108 static inline uint64_t rtR0MemObjSolPageToPhys(page_t **ppPages, size_t iPage)
    109 {
    110     pfn_t PageFrameNum = page_pptonum(ppPages[iPage]);
    111     AssertReleaseMsg(PageFrameNum != PFN_INVALID, ("rtR0MemObjSolPageToPhys failed. ppPages=%p iPage=%u\n", ppPages, iPage));
     99 * Returns the physical address for a page.
     100 *
     101 * @param    pPage      Pointer to the page.
     102 *
     103 * @returns The physical address for a page.
     104 */
     105static inline uint64_t rtR0MemObjSolPagePhys(page_t *pPage)
     106{
     107    AssertPtr(pPage);
     108    pfn_t PageFrameNum = page_pptonum(pPage);
     109    AssertReleaseMsg(PageFrameNum != PFN_INVALID, ("rtR0MemObjSolPagePhys failed pPage=%p\n"));
    112110    return (uint64_t)PageFrameNum << PAGESHIFT;
    113111}
     
    215213                    page_t *pPage = rtR0MemObjSolPageFromFreelist(virtAddr, PAGESIZE);
    216214                    if (!pPage)
     215                    {
    217216                        pPage = rtR0MemObjSolPageFromCachelist(virtAddr, PAGESIZE);
    218                     if (RT_UNLIKELY(!pPage))
    219                     {
    220                         /*
    221                          * No more pages found, release was grabbed so far.
    222                          */
    223                         page_create_putback(cPages - i);
    224                         while (--i >= 0)
    225                             page_free(ppPages[i], 0 /* don't need page, move to tail of pagelist */);
    226                         kmem_free(ppPages, cbPages);
    227                         page_unresv(cPages);
    228                         return NULL;
     217                        if (RT_UNLIKELY(!pPage))
     218                        {
     219                            /*
     220                             * No more pages found, release was grabbed so far.
     221                             */
     222                            page_create_putback(cPages - i);
     223                            while (--i >= 0)
     224                                page_free(ppPages[i], 0 /* don't need page, move to tail of pagelist */);
     225                            kmem_free(ppPages, cbPages);
     226                            page_unresv(cPages);
     227                            return NULL;
     228                        }
    229229                    }
    230230
     
    239239                 */
    240240                if (puPhys)
    241                     *puPhys = (uint64_t)page_pptonum(ppPages[0]) << PAGESHIFT;
     241                    *puPhys = rtR0MemObjSolPagePhys(ppPages[0]);
    242242                return ppPages;
    243243            }
     
    278278            page_downgrade(ppPages[iPage]);
    279279
    280         auPhys[iPage] = rtR0MemObjSolPageToPhys(ppPages, iPage);
     280        auPhys[iPage] = rtR0MemObjSolPagePhys(ppPages[iPage]);
    281281    }
    282282
     
    372372                }
    373373
    374                 uint64_t uPhys = (uint64_t)page_pptonum(pRootPage) << PAGESHIFT;
     374                uint64_t uPhys = rtR0MemObjSolPagePhys(pRootPage);
    375375                AssertMsg(!(uPhys & (cb - 1)), ("%llx %zx\n", uPhys, cb));
    376376                if (puPhys)
     
    10241024                return rtR0MemObjSolVirtToPhys(pb);
    10251025            }
    1026             return rtR0MemObjSolPageToPhys(pMemSolaris->pvHandle, iPage);
     1026            page_t **ppPages = pMemSolaris->pvHandle;
     1027            return rtR0MemObjSolPagePhys(ppPages[iPage]);
    10271028
    10281029        case RTR0MEMOBJTYPE_PAGE:
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