VirtualBox

Changeset 29711 in vbox for trunk/src/VBox/Runtime/r0drv


Ignore:
Timestamp:
May 20, 2010 8:33:40 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
61887
Message:

memobj-r0drv-freebsd.c: Use kmem_alloc_attr if available

File:
1 edited

Legend:

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

    r29027 r29711  
    215215        }
    216216
    217         /* unused: */
     217#if (__FreeBSD_version >= 900011) || (__FreeBSD_version >= 800505) || (__FreeBSD_version >= 703101)
    218218        case RTR0MEMOBJTYPE_LOW:
     219        {
     220            kmem_free(kernel_map, (vm_offset_t)pMemFreeBSD->Core.pv, pMemFreeBSD->Core.cb);
     221            break;
     222        }
     223#else
     224        case RTR0MEMOBJTYPE_LOW: /* unused */
     225#endif
    219226        default:
    220227            AssertMsgFailed(("enmType=%d\n", pMemFreeBSD->Core.enmType));
     
    224231    return VINF_SUCCESS;
    225232}
    226 
    227233
    228234int rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
     
    314320}
    315321
    316 
    317322int rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
    318323{
     324#if (__FreeBSD_version >= 900011) || (__FreeBSD_version >= 800505) || (__FreeBSD_version >= 703101)
     325    /*
     326     * Use kmem_alloc_attr, fExectuable is not needed because the
     327     * memory will be executable by default
     328     */
     329    NOREF(fExecutable);
     330
     331    /* create the object. */
     332    PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_LOW, NULL, cb);
     333    if (!pMemFreeBSD)
     334        return VERR_NO_MEMORY;
     335
     336    pMemFreeBSD->Core.pv = (void *)kmem_alloc_attr(kernel_map,          /* Kernel */
     337                                                   cb,                  /* Amount */
     338                                                   M_ZERO,              /* Zero memory */
     339                                                   0,                   /* Low physical address */
     340                                                   _4G - PAGE_SIZE,     /* Highest physical address */
     341                                                   VM_MEMATTR_DEFAULT); /* Default memory attributes */
     342    if (!pMemFreeBSD->Core.pv)
     343        return VERR_NO_MEMORY;
     344
     345    return VINF_SUCCESS;
     346#else
    319347    /*
    320348     * Try a Alloc first and see if we get luck, if not try contigmalloc.
     
    338366        rc = rtR0MemObjNativeAllocCont(ppMem, cb, fExecutable);
    339367    return rc;
     368#endif
    340369}
    341370
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