VirtualBox

Ignore:
Timestamp:
Mar 14, 2007 6:27:47 PM (18 years ago)
Author:
vboxsync
Message:

No longer require contiguous memory for the VM structure.
Did long overdue IOCtl cleanup wrt R3/R0 pointers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c

    r1355 r1480  
    246246static int      VBoxSupDrvDeviceControl(struct inode *pInode, struct file *pFilp,
    247247                                        unsigned int IOCmd, unsigned long IOArg);
    248 static void    *VBoxSupDrvMapUser(struct page **papPages, unsigned cPages, unsigned fProt, pgprot_t pgFlags);
     248static RTR3PTR  VBoxSupDrvMapUser(struct page **papPages, unsigned cPages, unsigned fProt, pgprot_t pgFlags);
    249249static int      VBoxSupDrvInitGip(PSUPDRVDEVEXT pDevExt);
    250250static int      VBoxSupDrvTermGip(PSUPDRVDEVEXT pDevExt);
    251251static void     VBoxSupGipTimer(unsigned long ulUser);
     252#ifdef CONFIG_SMP
    252253static void     VBoxSupDrvGipPerCpu(void *pvUser);
     254#endif
    253255static int      VBoxSupDrvOrder(unsigned long size);
    254256static int      VBoxSupDrvErr2LinuxErr(int);
     
    827829 * @param   pHCPhys     Where to store the physical address.
    828830 */
    829 int VBOXCALL supdrvOSContAllocOne(PSUPDRVMEMREF pMem, void **ppvR0, void **ppvR3, PRTHCPHYS pHCPhys)
     831int VBOXCALL supdrvOSContAllocOne(PSUPDRVMEMREF pMem, PRTR0PTR ppvR0, PRTR3PTR ppvR3, PRTHCPHYS pHCPhys)
    830832{
    831833    struct page *paPages;
     
    916918    {
    917919        *pHCPhys = HCPhys;
    918         *ppvR3 = (void *)ulAddr;
     920        *ppvR3 = ulAddr;
    919921        if (ppvR0)
    920922            *ppvR0 = (void *)ulAddr;
    921         pMem->pvR3              = (void *)ulAddr;
     923        pMem->pvR3              = ulAddr;
    922924        pMem->pvR0              = NULL;
    923925        pMem->u.cont.paPages    = paPages;
     
    10001002 * @param   ppvR3       Where to store the address of the Ring-3 mapping.
    10011003 */
    1002 int  VBOXCALL   supdrvOSMemAllocOne(PSUPDRVMEMREF pMem, void **ppvR0, void **ppvR3)
     1004int  VBOXCALL   supdrvOSMemAllocOne(PSUPDRVMEMREF pMem, PRTR0PTR ppvR0, PRTR3PTR ppvR3)
    10031005{
    10041006    const unsigned  cbAligned = RT_ALIGN(pMem->cb, PAGE_SIZE);
     
    11321134        up_write(&current->mm->mmap_sem);   /* check when we can leave this. */
    11331135    }
    1134     pMem->pvR3 = NULL;
     1136    pMem->pvR3 = NIL_RTR3PTR;
    11351137
    11361138    /*
     
    11901192 * @param   pgFlags     The page level protection.
    11911193 */
    1192 static void *VBoxSupDrvMapUser(struct page **papPages, unsigned cPages, unsigned fProt, pgprot_t pgFlags)
     1194static RTR3PTR VBoxSupDrvMapUser(struct page **papPages, unsigned cPages, unsigned fProt, pgprot_t pgFlags)
    11931195{
    11941196    int             rc = SUPDRV_ERR_NO_MEMORY;
     
    12341236        {
    12351237            up_write(&current->mm->mmap_sem);
    1236             return (void *)ulAddr;
     1238            return ulAddr;
    12371239        }
    12381240
     
    12521254    up_write(&current->mm->mmap_sem);
    12531255
    1254     return NULL;
     1256    return NIL_RTR3PTR;
    12551257}
    12561258
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