VirtualBox

Changeset 49718 in vbox


Ignore:
Timestamp:
Nov 29, 2013 10:51:54 AM (11 years ago)
Author:
vboxsync
Message:

Various FreeBSD fixes submitted Bernhard Froehlich

Location:
trunk/src/VBox
Files:
9 edited

Legend:

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

    r49634 r49718  
    292292     * Close the session.
    293293     */
    294     supdrvSessionRelease(&g_VBoxDrvFreeBSDDevExt, pSession);
     294    supdrvSessionRelease(pSession);
    295295    ASMAtomicDecU32(&g_cUsers);
    296296}
  • trunk/src/VBox/Main/src-server/HostDnsService.cpp

    r49409 r49718  
    136136# elif defined(RT_OS_SOLARIS)
    137137        g_monitor =  new HostDnsServiceSolaris();
     138# elif defined(RT_OS_FREEBSD)
     139        g_monitor = new HostDnsServiceFreebsd();
    138140# elif defined(RT_OS_OS2)
    139141        g_monitor = new HostDnsServiceOs2();
  • trunk/src/VBox/Main/src-server/HostDnsService.h

    r49409 r49718  
    143143};
    144144# endif
    145 # if defined(RT_OS_SOLARIS) || defined(RT_OS_LINUX) || defined(RT_OS_OS2)
     145# if defined(RT_OS_SOLARIS) || defined(RT_OS_LINUX) || defined(RT_OS_OS2) || defined(RT_OS_FREEBSD)
    146146class HostDnsServiceResolvConf: public HostDnsMonitor
    147147{
     
    183183};
    184184
     185#  elif defined(RT_OS_FREEBSD)
     186class HostDnsServiceFreebsd: public HostDnsServiceResolvConf
     187{
     188    public:
     189    HostDnsServiceFreebsd(){}
     190    ~HostDnsServiceFreebsd(){}
     191    HRESULT init(){ return HostDnsServiceResolvConf::init("/etc/resolv.conf");}
     192};
     193
    185194#  elif defined(RT_OS_OS2)
    186195class HostDnsServiceOs2 : public HostDnsServiceResolvConf
  • trunk/src/VBox/Main/src-server/freebsd/NetIf-freebsd.cpp

    r48016 r49718  
    4444#include <netinet/in.h>
    4545
     46#include <stdlib.h>
    4647#include <stdio.h>
    4748#include <unistd.h>
     
    389390
    390391            struct ifreq IfReq;
    391             RTSTrCopy(IfReq.ifr_name, sizeof(IfReq.ifr_name), pInfo->szShortName);
     392            RTStrCopy(IfReq.ifr_name, sizeof(IfReq.ifr_name), pInfo->szShortName);
    392393            if (ioctl(sock, SIOCGIFFLAGS, &IfReq) < 0)
    393394            {
  • trunk/src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp

    r48010 r49718  
    110110}
    111111
     112int getDiskListByFs(const char *name, DiskList& list)
     113{
     114    return VERR_NOT_IMPLEMENTED;
     115}
     116
    112117} /* namespace pm */
    113118
  • trunk/src/VBox/Runtime/r0drv/freebsd/alloc-r0drv-freebsd.c

    r36555 r49718  
    8080
    8181        /* Addr contains a start address vm_map_find will start searching for suitable space at. */
     82#if __FreeBSD_version >= 1000055
     83        int rc = vm_map_find(kernel_map, pVmObject, 0, &Addr,
     84                             cbAllocated, 0, VMFS_ANY_SPACE, VM_PROT_ALL, VM_PROT_ALL, 0);
     85#else
    8286        int rc = vm_map_find(kernel_map, pVmObject, 0, &Addr,
    8387                             cbAllocated, TRUE, VM_PROT_ALL, VM_PROT_ALL, 0);
     88#endif
    8489        if (rc == KERN_SUCCESS)
    8590        {
  • trunk/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c

    r42597 r49718  
    163163        case RTR0MEMOBJTYPE_PHYS_NC:
    164164        {
     165#if __FreeBSD_version >= 1000030
     166            VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
     167#else
    165168            VM_OBJECT_LOCK(pMemFreeBSD->pObject);
     169#endif
    166170            vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
    167171            vm_page_lock_queues();
     
    173177            }
    174178            vm_page_unlock_queues();
     179#if __FreeBSD_version >= 1000030
     180            VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
     181#else
    175182            VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
     183#endif
    176184            vm_object_deallocate(pMemFreeBSD->pObject);
    177185            break;
     
    201209    while (cTries <= 1)
    202210    {
     211#if __FreeBSD_version >= 1000030
     212        VM_OBJECT_WLOCK(pObject);
     213#else
    203214        VM_OBJECT_LOCK(pObject);
     215#endif
    204216        pPages = vm_page_alloc_contig(pObject, iPIndex, fFlags, cPages, 0,
    205217                                      VmPhysAddrHigh, uAlignment, 0, VM_MEMATTR_DEFAULT);
     218#if __FreeBSD_version >= 1000030
     219        VM_OBJECT_WUNLOCK(pObject);
     220#else
    206221        VM_OBJECT_UNLOCK(pObject);
     222#endif
    207223        if (pPages)
    208224            break;
     
    224240    if (!pPages)
    225241        return pPages;
     242#if __FreeBSD_version >= 1000030
     243    VM_OBJECT_WLOCK(pObject);
     244#else
    226245    VM_OBJECT_LOCK(pObject);
     246#endif
    227247    for (vm_pindex_t iPage = 0; iPage < cPages; iPage++)
    228248    {
     
    236256        }
    237257    }
     258#if __FreeBSD_version >= 1000030
     259    VM_OBJECT_WUNLOCK(pObject);
     260#else
    238261    VM_OBJECT_UNLOCK(pObject);
     262#endif
    239263    return pPages;
    240264#endif
     
    260284        {
    261285            /* Free all allocated pages */
     286#if __FreeBSD_version >= 1000030
     287            VM_OBJECT_WLOCK(pObject);
     288#else
    262289            VM_OBJECT_LOCK(pObject);
     290#endif
    263291            while (iPage-- > 0)
    264292            {
     
    270298                vm_page_unlock_queues();
    271299            }
     300#if __FreeBSD_version >= 1000030
     301            VM_OBJECT_WUNLOCK(pObject);
     302#else
    272303            VM_OBJECT_UNLOCK(pObject);
     304#endif
    273305            return rcNoMem;
    274306        }
     
    287319
    288320    /* No additional object reference for auto-deallocation upon unmapping. */
     321#if __FreeBSD_version >= 1000055
     322    rc = vm_map_find(kernel_map, pMemFreeBSD->pObject, 0,
     323                     &MapAddress, pMemFreeBSD->Core.cb, 0, VMFS_ANY_SPACE,
     324                     fExecutable ? VM_PROT_ALL : VM_PROT_RW, VM_PROT_ALL, 0);
     325#else
    289326    rc = vm_map_find(kernel_map, pMemFreeBSD->pObject, 0,
    290327                     &MapAddress, pMemFreeBSD->Core.cb, VMFS_ANY_SPACE,
    291328                     fExecutable ? VM_PROT_ALL : VM_PROT_RW, VM_PROT_ALL, 0);
     329#endif
    292330
    293331    if (rc == KERN_SUCCESS)
     
    403441        {
    404442            Assert(enmType == RTR0MEMOBJTYPE_PHYS);
     443#if __FreeBSD_version >= 1000030
     444            VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
     445#else
    405446            VM_OBJECT_LOCK(pMemFreeBSD->pObject);
     447#endif
    406448            pMemFreeBSD->Core.u.Phys.PhysBase = VM_PAGE_TO_PHYS(vm_page_find_least(pMemFreeBSD->pObject, 0));
     449#if __FreeBSD_version >= 1000030
     450            VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
     451#else
    407452            VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
     453#endif
    408454            pMemFreeBSD->Core.u.Phys.fAllocated = true;
    409455        }
     
    552598                     &MapAddress,                   /* addr (IN/OUT) */
    553599                     cb,                            /* length */
     600#if __FreeBSD_version >= 1000055
     601                     0,                             /* max addr */
     602#endif
    554603                     pvFixed == (void *)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
    555604                                                    /* find_space */
     
    629678                     &Addr,                 /* Start address IN/OUT */
    630679                     cbSub,                 /* Size of the mapping */
     680#if __FreeBSD_version >= 1000055
     681                     0,                     /* Upper bound of mapping */
     682#endif
    631683                     VMFS_ANY_SPACE,        /* Whether a suitable address should be searched for first */
    632684                     ProtectionFlags,       /* protection flags */
     
    705757                     &AddrR3,               /* Start address IN/OUT */
    706758                     pMemToMap->cb,         /* Size of the mapping */
     759#if __FreeBSD_version >= 1000055
     760                     0,                     /* Upper bound of the mapping */
     761#endif
    707762                     R3PtrFixed == (RTR3PTR)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
    708763                                            /* Whether a suitable address should be searched for first */
     
    815870        {
    816871            RTHCPHYS addr;
     872#if __FreeBSD_version >= 1000030
     873            VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
     874#else
    817875            VM_OBJECT_LOCK(pMemFreeBSD->pObject);
     876#endif
    818877            addr = VM_PAGE_TO_PHYS(vm_page_lookup(pMemFreeBSD->pObject, iPage));
     878#if __FreeBSD_version >= 1000030
     879            VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
     880#else
    819881            VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
     882#endif
    820883            return addr;
    821884        }
  • trunk/src/VBox/Runtime/r0drv/freebsd/mp-r0drv-freebsd.c

    r44529 r49718  
    8888}
    8989
     90
     91RTDECL(RTCPUID) RTMpGetCoreCount(void)
     92{
     93    return mp_maxid + 1;
     94}
    9095
    9196RTDECL(bool) RTMpIsCpuOnline(RTCPUID idCpu)
  • trunk/src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h

    r44238 r49718  
    5151#include <sys/kthread.h>
    5252#include <sys/lock.h>
     53#if __FreeBSD_version >= 1000030
     54#include <sys/rwlock.h>
     55#endif
    5356#include <sys/mutex.h>
    5457#include <sys/sched.h>
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