mirror of
https://git.freebsd.org/ports.git
synced 2025-07-17 01:09:24 -04:00
- Update to virtualbox-ose 4.2.20_1
- This update pulls in many changes from the port and brings better support for FreeBSD 10 and GCC from ports. I am doing that in preparation of the upcoming VirtualBox 4.3 update that should land soon.
This commit is contained in:
parent
91e3a74739
commit
a60eaff53f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=336332
45 changed files with 826 additions and 1590 deletions
|
@ -2,7 +2,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= virtualbox-ose
|
||||
DISTVERSION= 4.1.24
|
||||
DISTVERSION= 4.2.20
|
||||
CATEGORIES= emulators
|
||||
MASTER_SITES= http://download.virtualbox.org/virtualbox/${DISTVERSION}/ \
|
||||
http://tmp.chruetertee.ch/ \
|
||||
|
@ -34,9 +34,10 @@ CONFIGURE_ARGS+=--with-gcc="${CC}" --with-g++="${CXX}" --nofatal \
|
|||
--build-headless
|
||||
|
||||
CONFLICTS= bcc-[0-9]*
|
||||
CONFLICTS_INSTALL= virtualbox-ose-kmod-[3,4]* virtualbox-ose-kmod-devel-[3,4]*
|
||||
CONFLICTS_INSTALL= virtualbox-ose-kmod-4* virtualbox-ose-kmod-devel-4*
|
||||
|
||||
OPTIONS_DEFINE= DEBUG VIMAGE
|
||||
DEBUG_DESC= Debug symbols, additional logs and assertions
|
||||
VIMAGE_DESC= VIMAGE virtual networking support
|
||||
|
||||
NO_STAGE= yes
|
||||
|
@ -48,13 +49,14 @@ VBOX_BIN= ${WRKSRC}/out/${KMK_ARCH}/${KMK_BUILDTYPE}/bin/src
|
|||
|
||||
KMK_BUILDTYPE= release
|
||||
KMK_CONFIG= VBOX_LIBPATH_X11=${LOCALBASE} VBOX_FREEBSD_SRC=${SRC_BASE}/sys
|
||||
KMK_FLAGS= HostDrivers-src vboxdrv-mod VBoxNetFlt-src VBoxNetAdp-src
|
||||
KMK_FLAGS= HostDrivers-scripts vboxdrv-mod VBoxNetFlt-src VBoxNetAdp-src
|
||||
|
||||
MAKE_FLAGS= SYSDIR=${SRC_BASE}/sys
|
||||
|
||||
.if ${PORT_OPTIONS:MDEBUG}
|
||||
KMK_FLAGS+= BUILD_TYPE=debug
|
||||
KMK_BUILDTYPE= debug
|
||||
EXTRA_PATCHES+= ${FILESDIR}/extrapatch-Config.kmk ${FILESDIR}/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile
|
||||
MAKE_FLAGS+= DEBUG_FLAGS="-O1 -g"
|
||||
PLIST_SUB+= WITH_DEBUG=""
|
||||
.else
|
||||
|
@ -69,14 +71,6 @@ KMK_ARCH= freebsd.${ARCH}
|
|||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
.if ${OSVERSION} < 802000
|
||||
BROKEN= Does not compile on FreeBSD < 8.2
|
||||
.endif
|
||||
|
||||
.if ${OSVERSION} < 800500 && !empty(PORT_OPTIONS:MVIMAGE)
|
||||
IGNORE= newer kernel is required to build with VIMAGE
|
||||
.endif
|
||||
|
||||
post-patch:
|
||||
@${ECHO} 'VBOX_WITH_VBOXDRV = 1' > ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_WITH_NETFLT = 1' >> ${WRKSRC}/LocalConfig.kmk
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
SHA256 (VirtualBox-4.1.24.tar.bz2) = 74008b8e8942045668c1b7d06b0a4bb5fe8464066e343e3a2e1ba30b94ce8a7f
|
||||
SIZE (VirtualBox-4.1.24.tar.bz2) = 74612732
|
||||
SHA256 (VirtualBox-4.2.20.tar.bz2) = 193aa3ce7c0e700fe6a12b64bf462ce633a856f1e831ee4a337cc3439b21df61
|
||||
SIZE (VirtualBox-4.2.20.tar.bz2) = 77050211
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
--- Config.kmk.orig 2012-05-24 01:15:53.393052000 +0200
|
||||
+++ Config.kmk 2012-05-24 01:16:15.883067161 +0200
|
||||
@@ -3188,7 +3188,7 @@
|
||||
| xargs -J% objcopy % $(out)
|
||||
|
||||
## Strip debug info (comment out if debugging or something).
|
||||
- objcopy --strip-debug $(out)
|
||||
+# objcopy --strip-debug $(out)
|
||||
endef
|
||||
else # x86
|
||||
TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT = $(outbase).kld
|
|
@ -0,0 +1,11 @@
|
|||
--- src/VBox/HostDrivers/Support/freebsd/Makefile.orig 2012-10-18 16:23:16.000000000 +0200
|
||||
+++ src/VBox/HostDrivers/Support/freebsd/Makefile 2012-10-20 08:13:07.301179212 +0200
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
KMOD = vboxdrv
|
||||
|
||||
-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS
|
||||
+CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DEBUG
|
||||
|
||||
.if (${MACHINE_ARCH} == "i386")
|
||||
CFLAGS += -DRT_ARCH_X86
|
56
emulators/virtualbox-ose-kmod-legacy/files/patch-Config.kmk
Normal file
56
emulators/virtualbox-ose-kmod-legacy/files/patch-Config.kmk
Normal file
|
@ -0,0 +1,56 @@
|
|||
--- Config.kmk.orig 2012-12-20 14:44:38.260858319 +0100
|
||||
+++ Config.kmk 2012-12-20 14:55:59.491850177 +0100
|
||||
@@ -3239,7 +3239,7 @@
|
||||
$(VBOX_GCC_WARN) -Wpointer-arith -Winline $(VBOX_GCC_Wno-pointer-sign) $(VBOX_GCC_fdiagnostics-show-option) \
|
||||
-Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \
|
||||
-Wimplicit-function-declaration -Werror-implicit-function-declaration \
|
||||
- -O2 -fformat-extensions -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
+ -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
$(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
|
||||
-nostdinc -std=c99
|
||||
TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2
|
||||
@@ -3248,7 +3248,7 @@
|
||||
-mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -Wundef
|
||||
TEMPLATE_VBOXR0DRV_CXXFLAGS = -fno-exceptions -fno-rtti \
|
||||
$(VBOX_GCC_WARN) -Wpointer-arith -Winline \
|
||||
- -O2 -fno-format-extensions -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
+ -O2 -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
$(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
|
||||
-nostdinc
|
||||
TEMPLATE_VBOXR0DRV_CXXFLAGS.x86 = $(TEMPLATE_VBOXR0DRV_CFLAGS.x86)
|
||||
@@ -3465,8 +3465,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXR3EXE_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
else ifeq ($(KBUILD_TARGET),solaris)
|
||||
TEMPLATE_VBOXR3EXE_TOOL = GXX3PLAIN
|
||||
@@ -3955,8 +3953,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXMAINEXE_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
else ifeq ($(KBUILD_TARGET),solaris)
|
||||
TEMPLATE_VBOXMAINEXE_TOOL = GXX3PLAIN
|
||||
@@ -4371,8 +4367,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXQT4GUIEXE_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
endif
|
||||
ifeq ($(KBUILD_TARGET),solaris)
|
||||
@@ -4555,8 +4549,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXBLDPROG_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
else ifeq ($(KBUILD_HOST),solaris)
|
||||
TEMPLATE_VBOXBLDPROG_TOOL = GXX3PLAIN
|
|
@ -1,19 +0,0 @@
|
|||
- Fix build failure on FreeBSD 10-CURRENT after r228444
|
||||
|
||||
include/iprt/types.h:174: error: redefinition of typedef 'bool'
|
||||
@/sys/types.h:271: error: previous declaration of 'bool' was here
|
||||
|
||||
Submitted by: Daichi GOTO <daichi@freebsd.org>
|
||||
--- include/iprt/types.h.orig 2011-10-28 16:29:51.000000000 +0200
|
||||
+++ include/iprt/types.h 2011-12-22 10:17:16.000000000 +0100
|
||||
@@ -167,6 +167,10 @@
|
||||
# if defined(__GNUC__)
|
||||
# if defined(RT_OS_LINUX) && __GNUC__ < 3
|
||||
typedef uint8_t bool;
|
||||
+# elif defined(RT_OS_FREEBSD)
|
||||
+# ifndef __bool_true_false_are_defined
|
||||
+typedef _Bool bool;
|
||||
+# endif
|
||||
# else
|
||||
# if defined(RT_OS_DARWIN) && defined(_STDBOOL_H)
|
||||
# undef bool
|
|
@ -1,31 +0,0 @@
|
|||
- Fix compile error: 'D_PSEUDO' undeclared here on 10-CURRENT
|
||||
|
||||
Submitted by: Jung-uk Kim <jkim@FreeBSD.org>
|
||||
|
||||
- Fix check that kernel module can not be unloaded when there
|
||||
are running VMs
|
||||
|
||||
Submitted by: aeichner
|
||||
Reported by: avg
|
||||
--- src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c.orig 2011-11-04 12:19:39.000000000 +0100
|
||||
+++ src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c 2011-12-13 12:22:44.325251163 +0100
|
||||
@@ -100,7 +100,9 @@
|
||||
static struct cdevsw g_VBoxDrvFreeBSDChrDevSW =
|
||||
{
|
||||
.d_version = D_VERSION,
|
||||
-#if __FreeBSD_version > 800061
|
||||
+#if __FreeBSD_version >= 1000000
|
||||
+ .d_flags = D_TRACKCLOSE | D_NEEDMINOR,
|
||||
+#elif __FreeBSD_version > 800061
|
||||
.d_flags = D_PSEUDO | D_TRACKCLOSE | D_NEEDMINOR,
|
||||
#else
|
||||
.d_flags = D_PSEUDO | D_TRACKCLOSE,
|
||||
@@ -205,7 +207,7 @@
|
||||
Log(("VBoxDrvFreeBSDUnload:\n"));
|
||||
|
||||
if (g_cUsers > 0)
|
||||
- return EBUSY;
|
||||
+ return VERR_RESOURCE_BUSY;
|
||||
|
||||
/*
|
||||
* Reserve what we did in VBoxDrvFreeBSDInit.
|
|
@ -0,0 +1,25 @@
|
|||
Fix kmod panic when VIMAGE is disabled in the kernel and port
|
||||
|
||||
Submitted by: Gleb Kurtsou <gleb@freebsd.org>
|
||||
--- src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk.orig 2013-04-12 03:38:10.000000000 -0700
|
||||
+++ src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk 2013-06-11 21:24:05.000000000 -0700
|
||||
@@ -143,12 +143,15 @@
|
||||
$$(if $$(eq $$(VBoxNetAdp/freebsd/Makefile_VBOX_HARDENED),$$(VBOX_WITH_HARDENING)),,FORCE) \
|
||||
| $$(dir $$@)
|
||||
$(QUIET)$(RM) -f -- $@
|
||||
- ifndef VBOX_WITH_HARDENING
|
||||
- $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@ $<
|
||||
- else
|
||||
$(QUIET)$(CP) -f $< $@
|
||||
+ ifndef VBOX_WITH_HARDENING
|
||||
+ $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@.tmp $@
|
||||
+ ${QUIET}$(MV) -f $@.tmp $@
|
||||
+ endif
|
||||
+ ifndef VBOX_WITH_NETFLT_VIMAGE
|
||||
+ $(QUIET)$(SED) -e "s;-DVIMAGE;;g" --output $@.tmp $@
|
||||
+ ${QUIET}$(MV) -f $@.tmp $@
|
||||
endif
|
||||
-
|
||||
endif # freebsd
|
||||
|
||||
include $(FILE_KBUILD_SUB_FOOTER)
|
|
@ -1,16 +0,0 @@
|
|||
This patch adds support for VIMAGE to VBoxNetAdp and thus
|
||||
also fixes that panic.
|
||||
|
||||
Submitted by: Mikolaj Golub <trociny at freebsd.org>
|
||||
--- src/VBox/HostDrivers/VBoxNetAdp/freebsd/Makefile 2012-03-13 15:15:44.000000000 +0200
|
||||
+++ src/VBox/HostDrivers/VBoxNetAdp/freebsd/Makefile 2012-04-01 13:27:16.000000000 +0300
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
KMOD = vboxnetadp
|
||||
|
||||
-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING
|
||||
+CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVIMAGE
|
||||
|
||||
.if (${MACHINE_ARCH} == "i386")
|
||||
CFLAGS += -DRT_ARCH_X86
|
||||
diff -rpu VirtualBox-4.1.10.orig/src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c VirtualBox-4.1.10/src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c
|
|
@ -1,54 +0,0 @@
|
|||
This patch adds support for VIMAGE to VBoxNetAdp and thus
|
||||
also fixes that panic.
|
||||
|
||||
Submitted by: Mikolaj Golub <trociny at freebsd.org>
|
||||
--- src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c.orig 2012-06-20 15:17:03.000000000 +0200
|
||||
+++ src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c 2012-07-25 18:30:13.695891353 +0200
|
||||
@@ -68,6 +68,22 @@
|
||||
#define VBOXNETADP_OS_SPECFIC 1
|
||||
#include "../VBoxNetAdpInternal.h"
|
||||
|
||||
+#if defined(__FreeBSD_version) && __FreeBSD_version >= 800500
|
||||
+# include <sys/jail.h>
|
||||
+# include <net/vnet.h>
|
||||
+
|
||||
+# define VBOXCURVNET_SET(arg) CURVNET_SET_QUIET(arg)
|
||||
+# define VBOXCURVNET_SET_FROM_UCRED() VBOXCURVNET_SET(CRED_TO_VNET(curthread->td_ucred))
|
||||
+# define VBOXCURVNET_RESTORE() CURVNET_RESTORE()
|
||||
+
|
||||
+#else /* !defined(__FreeBSD_version) || __FreeBSD_version < 800500 */
|
||||
+
|
||||
+# define VBOXCURVNET_SET(arg)
|
||||
+# define VBOXCURVNET_SET_FROM_UCRED()
|
||||
+# define VBOXCURVNET_RESTORE()
|
||||
+
|
||||
+#endif /* !defined(__FreeBSD_version) || __FreeBSD_version < 800500 */
|
||||
+
|
||||
static int VBoxNetAdpFreeBSDCtrlioctl(struct cdev *, u_long, caddr_t, int flags,
|
||||
struct thread *);
|
||||
static struct cdevsw vboxnetadp_cdevsw =
|
||||
@@ -260,6 +276,7 @@
|
||||
{
|
||||
struct ifnet *ifp;
|
||||
|
||||
+ VBOXCURVNET_SET_FROM_UCRED();
|
||||
ifp = if_alloc(IFT_ETHER);
|
||||
if (ifp == NULL)
|
||||
return VERR_NO_MEMORY;
|
||||
@@ -279,6 +296,7 @@
|
||||
|
||||
strncpy(pThis->szName, ifp->if_xname, VBOXNETADP_MAX_NAME_LEN);
|
||||
pThis->u.s.ifp = ifp;
|
||||
+ VBOXCURVNET_RESTORE();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -287,6 +305,8 @@
|
||||
struct ifnet *ifp;
|
||||
|
||||
ifp = pThis->u.s.ifp;
|
||||
+ VBOXCURVNET_SET(ifp->if_vnet);
|
||||
ether_ifdetach(ifp);
|
||||
if_free(ifp);
|
||||
+ VBOXCURVNET_RESTORE();
|
||||
}
|
|
@ -1,31 +1,72 @@
|
|||
The attached patch fixes a kernel crash on FreeBSD 10-CURRENT hosts
|
||||
with VIMAGE enabled when a VM is powered off.
|
||||
Add VLAN trunking support to vboxnetflt
|
||||
|
||||
Submitted by: Mikolaj Golub <trociny at freebsd.org>
|
||||
--- src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c 2012-03-13 15:15:44.000000000 +0200
|
||||
+++ src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c 2012-04-01 13:43:02.000000000 +0300
|
||||
@@ -651,13 +651,13 @@ bool vboxNetFltOsMaybeRediscovered(PVBOX
|
||||
ng_rmnode_self(pThis->u.s.node);
|
||||
pThis->u.s.node = NULL;
|
||||
}
|
||||
+ VBOXCURVNET_RESTORE();
|
||||
See: http://lists.freebsd.org/pipermail/freebsd-emulation/2012-April/009698.html
|
||||
See: http://lists.freebsd.org/pipermail/freebsd-emulation/2013-May/010605.html
|
||||
Submitted by: Landon J Fuller <landonf at plausible.coop>
|
||||
--- ./src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c.orig 2013-04-12 06:38:11.000000000 -0400
|
||||
+++ ./src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c 2013-05-25 20:14:52.152180452 -0400
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <net/if_dl.h>
|
||||
#include <net/if_types.h>
|
||||
#include <net/ethernet.h>
|
||||
+#include <net/if_vlan_var.h>
|
||||
|
||||
if (ifp0 != NULL)
|
||||
{
|
||||
vboxNetFltOsDeleteInstance(pThis);
|
||||
vboxNetFltOsInitInstance(pThis, NULL);
|
||||
}
|
||||
- VBOXCURVNET_RESTORE();
|
||||
#include <netgraph/ng_message.h>
|
||||
#include <netgraph/netgraph.h>
|
||||
@@ -427,6 +428,8 @@
|
||||
struct ifnet *ifp = pThis->u.s.ifp;
|
||||
unsigned int cSegs = 0;
|
||||
bool fDropIt = false, fActive;
|
||||
+ bool is_vl_tagged = false;
|
||||
+ uint16_t vl_tag;
|
||||
PINTNETSG pSG;
|
||||
|
||||
return !ASMAtomicUoReadBool(&pThis->fDisconnectedFromHost);
|
||||
}
|
||||
@@ -671,8 +671,10 @@ void vboxNetFltOsDeleteInstance(PVBOXNET
|
||||
mtx_destroy(&pThis->u.s.inq.ifq_mtx);
|
||||
mtx_destroy(&pThis->u.s.outq.ifq_mtx);
|
||||
VBOXCURVNET_SET(ifp->if_vnet);
|
||||
@@ -439,6 +442,19 @@
|
||||
if (m == NULL)
|
||||
break;
|
||||
|
||||
+ VBOXCURVNET_SET_FROM_UCRED();
|
||||
if (pThis->u.s.node != NULL)
|
||||
ng_rmnode_self(pThis->u.s.node);
|
||||
+ VBOXCURVNET_RESTORE();
|
||||
pThis->u.s.node = NULL;
|
||||
}
|
||||
+ /* Prepend a VLAN header for consumption by the virtual switch */
|
||||
+ if (m->m_flags & M_VLANTAG) {
|
||||
+ vl_tag = m->m_pkthdr.ether_vtag;
|
||||
+ is_vl_tagged = true;
|
||||
+
|
||||
+ m = ether_vlanencap(m, m->m_pkthdr.ether_vtag);
|
||||
+ if (m == NULL) {
|
||||
+ printf("vboxflt: unable to prepend VLAN header\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ m->m_flags &= ~M_VLANTAG;
|
||||
+ }
|
||||
+
|
||||
for (m0 = m; m0 != NULL; m0 = m0->m_next)
|
||||
if (m0->m_len > 0)
|
||||
cSegs++;
|
||||
@@ -453,6 +469,27 @@
|
||||
vboxNetFltFreeBSDMBufToSG(pThis, m, pSG, cSegs, 0);
|
||||
fDropIt = pThis->pSwitchPort->pfnRecv(pThis->pSwitchPort, NULL /* pvIf */, pSG, INTNETTRUNKDIR_WIRE);
|
||||
RTMemTmpFree(pSG);
|
||||
+
|
||||
+ /* Restore the VLAN flags before re-injecting the packet */
|
||||
+ if (is_vl_tagged && !fDropIt) {
|
||||
+ struct ether_vlan_header *vl_hdr;
|
||||
+
|
||||
+ /* This shouldn't fail, as the header was just prepended */
|
||||
+ if (m->m_len < sizeof(*vl_hdr) && (m = m_pullup(m, sizeof(*vl_hdr))) == NULL) {
|
||||
+ printf("vboxflt: unable to pullup VLAN header\n");
|
||||
+ m_freem(m);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ /* Copy the MAC dhost/shost over the 802.1q field */
|
||||
+ vl_hdr = mtod(m, struct ether_vlan_header *);
|
||||
+ bcopy((char *)vl_hdr, (char *)vl_hdr + ETHER_VLAN_ENCAP_LEN, ETHER_HDR_LEN - ETHER_TYPE_LEN);
|
||||
+ m_adj(m, ETHER_VLAN_ENCAP_LEN);
|
||||
+
|
||||
+ m->m_pkthdr.ether_vtag = vl_tag;
|
||||
+ m->m_flags |= M_VLANTAG;
|
||||
+ }
|
||||
+
|
||||
if (fDropIt)
|
||||
m_freem(m);
|
||||
else
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
--- src/VBox/Runtime/r0drv/freebsd/alloc-r0drv-freebsd.c 2013-09-06 06:30:30.000000000 -0600
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/alloc-r0drv-freebsd.c 2013-09-18 12:01:45.000000000 -0600
|
||||
@@ -79,8 +79,13 @@
|
||||
return VERR_NO_EXEC_MEMORY;
|
||||
|
||||
/* Addr contains a start address vm_map_find will start searching for suitable space at. */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ int rc = vm_map_find(kernel_map, pVmObject, 0, &Addr,
|
||||
+ cbAllocated, 0, VMFS_ANY_SPACE, VM_PROT_ALL, VM_PROT_ALL, 0);
|
||||
+#else
|
||||
int rc = vm_map_find(kernel_map, pVmObject, 0, &Addr,
|
||||
cbAllocated, TRUE, VM_PROT_ALL, VM_PROT_ALL, 0);
|
||||
+#endif
|
||||
if (rc == KERN_SUCCESS)
|
||||
{
|
||||
rc = vm_map_wire(kernel_map, Addr, Addr + cbAllocated,
|
|
@ -1,893 +1,56 @@
|
|||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2012-12-19 20:51:59.000000000 +0100
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2012-12-20 11:57:20.999850739 +0100
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 knut st. osmundsen <bird-src-spam@anduin.net>
|
||||
+ * Copyright (c) 2011 Andriy Gapon <avg@FreeBSD.org>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
@@ -54,23 +55,8 @@
|
||||
/** The core structure. */
|
||||
RTR0MEMOBJINTERNAL Core;
|
||||
/** Type dependent data */
|
||||
- union
|
||||
- {
|
||||
- /** Non physical memory allocations */
|
||||
- struct
|
||||
- {
|
||||
- /** The VM object associated with the allocation. */
|
||||
- vm_object_t pObject;
|
||||
- } NonPhys;
|
||||
- /** Physical memory allocations */
|
||||
- struct
|
||||
- {
|
||||
- /** Number of pages */
|
||||
- uint32_t cPages;
|
||||
- /** Array of pages - variable */
|
||||
- vm_page_t apPages[1];
|
||||
- } Phys;
|
||||
- } u;
|
||||
+ /** The VM object associated with the allocation. */
|
||||
+ vm_object_t pObject;
|
||||
} RTR0MEMOBJFREEBSD, *PRTR0MEMOBJFREEBSD;
|
||||
|
||||
|
||||
@@ -125,25 +111,14 @@
|
||||
|
||||
switch (pMemFreeBSD->Core.enmType)
|
||||
{
|
||||
- case RTR0MEMOBJTYPE_CONT:
|
||||
- contigfree(pMemFreeBSD->Core.pv, pMemFreeBSD->Core.cb, M_IPRTMOBJ);
|
||||
- break;
|
||||
-
|
||||
case RTR0MEMOBJTYPE_PAGE:
|
||||
+ case RTR0MEMOBJTYPE_LOW:
|
||||
+ case RTR0MEMOBJTYPE_CONT:
|
||||
From Alan L. Cox on FreeBSD-current:
|
||||
|
||||
I just glanced at the virtualbox code for a couple minutes. For
|
||||
FreeBSD 9 and 10, these lock acquires are completely unnecessary, and
|
||||
have been since FreeBSD 9.0. Just delete them. They may be equally
|
||||
unnecessary under FreeBSD 8, but I didn't look carefully enough to
|
||||
answer that question.
|
||||
|
||||
[1] http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037963.html
|
||||
---
|
||||
src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c b/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
|
||||
index 5c90cf3..1176b51 100644
|
||||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
|
||||
@@ -164,14 +164,19 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
|
||||
{
|
||||
rc = vm_map_remove(kernel_map,
|
||||
(vm_offset_t)pMemFreeBSD->Core.pv,
|
||||
(vm_offset_t)pMemFreeBSD->Core.pv + pMemFreeBSD->Core.cb);
|
||||
AssertMsg(rc == KERN_SUCCESS, ("%#x", rc));
|
||||
-
|
||||
- vm_page_lock_queues();
|
||||
- for (uint32_t iPage = 0; iPage < pMemFreeBSD->u.Phys.cPages; iPage++)
|
||||
- {
|
||||
- vm_page_t pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
- vm_page_unwire(pPage, 0);
|
||||
- vm_page_free(pPage);
|
||||
- }
|
||||
- vm_page_unlock_queues();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -165,8 +140,8 @@
|
||||
case RTR0MEMOBJTYPE_RES_VIRT:
|
||||
{
|
||||
vm_map_t pMap = kernel_map;
|
||||
- if (pMemFreeBSD->Core.u.Lock.R0Process != NIL_RTR0PROCESS)
|
||||
- pMap = &((struct proc *)pMemFreeBSD->Core.u.Lock.R0Process)->p_vmspace->vm_map;
|
||||
+ if (pMemFreeBSD->Core.u.ResVirt.R0Process != NIL_RTR0PROCESS)
|
||||
+ pMap = &((struct proc *)pMemFreeBSD->Core.u.ResVirt.R0Process)->p_vmspace->vm_map;
|
||||
rc = vm_map_remove(pMap,
|
||||
(vm_offset_t)pMemFreeBSD->Core.pv,
|
||||
(vm_offset_t)pMemFreeBSD->Core.pv + pMemFreeBSD->Core.cb);
|
||||
@@ -180,7 +155,6 @@
|
||||
|
||||
if (pMemFreeBSD->Core.u.Mapping.R0Process != NIL_RTR0PROCESS)
|
||||
pMap = &((struct proc *)pMemFreeBSD->Core.u.Mapping.R0Process)->p_vmspace->vm_map;
|
||||
-
|
||||
rc = vm_map_remove(pMap,
|
||||
(vm_offset_t)pMemFreeBSD->Core.pv,
|
||||
(vm_offset_t)pMemFreeBSD->Core.pv + pMemFreeBSD->Core.cb);
|
||||
@@ -191,26 +165,24 @@
|
||||
case RTR0MEMOBJTYPE_PHYS:
|
||||
case RTR0MEMOBJTYPE_PHYS_NC:
|
||||
{
|
||||
+ VM_OBJECT_LOCK(pMemFreeBSD->pObject);
|
||||
+ vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
|
||||
VM_OBJECT_LOCK(pMemFreeBSD->pObject);
|
||||
vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
|
||||
+#if __FreeBSD_version < 900000
|
||||
+ /* See http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037963.html */
|
||||
vm_page_lock_queues();
|
||||
- for (uint32_t iPage = 0; iPage < pMemFreeBSD->u.Phys.cPages; iPage++)
|
||||
+#endif
|
||||
+ for (vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
|
||||
+ pPage != NULL;
|
||||
+ pPage = vm_page_next(pPage))
|
||||
for (vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
|
||||
pPage != NULL;
|
||||
pPage = vm_page_next(pPage))
|
||||
{
|
||||
- vm_page_t pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
vm_page_unwire(pPage, 0);
|
||||
- vm_page_free(pPage);
|
||||
}
|
||||
vm_page_unlock_queues();
|
||||
+ VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
|
||||
+ vm_object_deallocate(pMemFreeBSD->pObject);
|
||||
break;
|
||||
}
|
||||
|
||||
-#ifdef USE_KMEM_ALLOC_ATTR
|
||||
- case RTR0MEMOBJTYPE_LOW:
|
||||
- {
|
||||
- kmem_free(kernel_map, (vm_offset_t)pMemFreeBSD->Core.pv, pMemFreeBSD->Core.cb);
|
||||
- break;
|
||||
- }
|
||||
-#else
|
||||
- case RTR0MEMOBJTYPE_LOW: /* unused */
|
||||
-#endif
|
||||
default:
|
||||
AssertMsgFailed(("enmType=%d\n", pMemFreeBSD->Core.enmType));
|
||||
return VERR_INTERNAL_ERROR;
|
||||
@@ -220,183 +192,185 @@
|
||||
}
|
||||
|
||||
|
||||
-DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
|
||||
-{
|
||||
- int rc;
|
||||
- size_t cPages = cb >> PAGE_SHIFT;
|
||||
-
|
||||
- /* create the object. */
|
||||
- PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJFREEBSD, u.Phys.apPages[cPages]),
|
||||
- RTR0MEMOBJTYPE_PAGE, NULL, cb);
|
||||
- if (!pMemFreeBSD)
|
||||
- return VERR_NO_MEMORY;
|
||||
-
|
||||
- pMemFreeBSD->u.Phys.cPages = cPages;
|
||||
+static vm_page_t FreeBSDContigPhysAllocHelper(vm_object_t pObject, vm_pindex_t iPIndex,
|
||||
+ u_long cPages, vm_paddr_t VmPhysAddrHigh,
|
||||
+ u_long uAlignment, bool fWire)
|
||||
+{
|
||||
+ vm_page_t pPages;
|
||||
+ int tries = 0;
|
||||
+#if __FreeBSD_version > 1000000
|
||||
+ int flags = VM_ALLOC_INTERRUPT | VM_ALLOC_NOBUSY;
|
||||
+
|
||||
+ if (fWire)
|
||||
+ flags |= VM_ALLOC_WIRED;
|
||||
+ while (1)
|
||||
+ {
|
||||
+ VM_OBJECT_LOCK(pObject);
|
||||
+ pPages = vm_page_alloc_contig(pObject, iPIndex, flags, cPages, 0, VmPhysAddrHigh, uAlignment, 0, VM_MEMATTR_DEFAULT);
|
||||
+ VM_OBJECT_UNLOCK(pObject);
|
||||
+ if (pPages || tries >= 1)
|
||||
+ break;
|
||||
+ vm_pageout_grow_cache(tries, 0, VmPhysAddrHigh);
|
||||
+ tries++;
|
||||
+ }
|
||||
+ return pPages;
|
||||
+#else
|
||||
|
||||
- vm_offset_t MapAddress = vm_map_min(kernel_map);
|
||||
- rc = vm_map_find(kernel_map, /* map */
|
||||
- NULL, /* object */
|
||||
- 0, /* offset */
|
||||
- &MapAddress, /* addr (IN/OUT) */
|
||||
- cb, /* length */
|
||||
- TRUE, /* find_space */
|
||||
- fExecutable /* protection */
|
||||
- ? VM_PROT_ALL
|
||||
- : VM_PROT_RW,
|
||||
- VM_PROT_ALL, /* max(_prot) */
|
||||
- 0); /* cow (copy-on-write) */
|
||||
- if (rc == KERN_SUCCESS)
|
||||
+ while (1)
|
||||
{
|
||||
- rc = VINF_SUCCESS;
|
||||
-
|
||||
- for (size_t iPage = 0; iPage < cPages; iPage++)
|
||||
+ pPages = vm_phys_alloc_contig(cPages, 0, VmPhysAddrHigh, uAlignment, 0);
|
||||
+ if (pPages || tries >= 1)
|
||||
+ break;
|
||||
+ vm_contig_grow_cache(tries, 0, VmPhysAddrHigh);
|
||||
+ tries++;
|
||||
+ }
|
||||
+ if (!pPages)
|
||||
+ return pPages;
|
||||
+ VM_OBJECT_LOCK(pObject);
|
||||
+ for (vm_pindex_t iPage = 0; iPage < cPages; iPage++)
|
||||
+ {
|
||||
+ vm_page_t pPage = pPages + iPage;
|
||||
+ vm_page_insert(pPage, pObject, iPIndex + iPage);
|
||||
+ pPage->valid = VM_PAGE_BITS_ALL;
|
||||
+ if (fWire)
|
||||
{
|
||||
- vm_page_t pPage;
|
||||
+ pPage->wire_count = 1;
|
||||
+ atomic_add_int(&cnt.v_wire_count, 1);
|
||||
+ }
|
||||
+ }
|
||||
+ VM_OBJECT_UNLOCK(pObject);
|
||||
+ return pPages;
|
||||
+#endif
|
||||
+}
|
||||
|
||||
- pPage = vm_page_alloc(NULL, iPage,
|
||||
- VM_ALLOC_SYSTEM |
|
||||
- VM_ALLOC_WIRED | VM_ALLOC_NOOBJ);
|
||||
+static int FreeBSDPhysAllocHelper(vm_object_t pObject, u_long cPages,
|
||||
+ vm_paddr_t VmPhysAddrHigh, u_long uAlignment,
|
||||
+ bool fContiguous, bool fWire)
|
||||
+{
|
||||
+ if (fContiguous)
|
||||
+ {
|
||||
+ if (FreeBSDContigPhysAllocHelper(pObject, 0, cPages, VmPhysAddrHigh, uAlignment, fWire) != NULL)
|
||||
+ return VINF_SUCCESS;
|
||||
+ else
|
||||
+ return VERR_NO_MEMORY;
|
||||
+ }
|
||||
|
||||
- if (!pPage)
|
||||
+ for (vm_pindex_t iPage = 0; iPage < cPages; iPage++)
|
||||
+ {
|
||||
+ vm_page_t pPage = FreeBSDContigPhysAllocHelper(pObject, iPage, 1, VmPhysAddrHigh, uAlignment, fWire);
|
||||
+ if (!pPage)
|
||||
+ {
|
||||
+ /* Free all allocated pages */
|
||||
+ VM_OBJECT_LOCK(pObject);
|
||||
+ while (iPage-- > 0)
|
||||
{
|
||||
- /*
|
||||
- * Out of pages
|
||||
- * Remove already allocated pages
|
||||
- */
|
||||
- while (iPage-- > 0)
|
||||
- {
|
||||
- pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
- vm_page_lock_queues();
|
||||
+ pPage = vm_page_lookup(pObject, iPage);
|
||||
+#if __FreeBSD_version < 900000
|
||||
+ vm_page_lock_queues();
|
||||
vm_page_unlock_queues();
|
||||
+#endif
|
||||
+ if (fWire)
|
||||
vm_page_unwire(pPage, 0);
|
||||
- vm_page_free(pPage);
|
||||
- vm_page_unlock_queues();
|
||||
- }
|
||||
- rc = VERR_NO_MEMORY;
|
||||
- break;
|
||||
+ vm_page_free(pPage);
|
||||
+ vm_page_unlock_queues();
|
||||
}
|
||||
-
|
||||
- pPage->valid = VM_PAGE_BITS_ALL;
|
||||
- pMemFreeBSD->u.Phys.apPages[iPage] = pPage;
|
||||
+ VM_OBJECT_UNLOCK(pObject);
|
||||
+ return VERR_NO_MEMORY;
|
||||
}
|
||||
+ }
|
||||
+ return VINF_SUCCESS;
|
||||
+}
|
||||
|
||||
- if (rc == VINF_SUCCESS)
|
||||
- {
|
||||
- vm_offset_t AddressDst = MapAddress;
|
||||
+static int FreeBSDAllocHelper(PRTR0MEMOBJFREEBSD pMemFreeBSD, bool fExecutable,
|
||||
+ vm_paddr_t VmPhysAddrHigh, bool fContiguous)
|
||||
+{
|
||||
+ int rc;
|
||||
+ size_t cPages = atop(pMemFreeBSD->Core.cb);
|
||||
|
||||
- for (size_t iPage = 0; iPage < cPages; iPage++)
|
||||
- {
|
||||
- vm_page_t pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
+ pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, cPages);
|
||||
+ vm_offset_t MapAddress = vm_map_min(kernel_map);
|
||||
|
||||
- MY_PMAP_ENTER(kernel_map->pmap, AddressDst, pPage,
|
||||
- fExecutable
|
||||
- ? VM_PROT_ALL
|
||||
- : VM_PROT_RW,
|
||||
- TRUE);
|
||||
+ // no additional object reference for auto-deallocation upon unmapping
|
||||
+ rc = vm_map_find(kernel_map, pMemFreeBSD->pObject, 0,
|
||||
+ &MapAddress, pMemFreeBSD->Core.cb, VMFS_ANY_SPACE,
|
||||
+ fExecutable ? VM_PROT_ALL : VM_PROT_RW, VM_PROT_ALL, 0);
|
||||
|
||||
- AddressDst += PAGE_SIZE;
|
||||
- }
|
||||
+ if (rc == KERN_SUCCESS)
|
||||
+ {
|
||||
+ rc = FreeBSDPhysAllocHelper(pMemFreeBSD->pObject, cPages, VmPhysAddrHigh, PAGE_SIZE, fContiguous, false);
|
||||
+ if (RT_SUCCESS(rc))
|
||||
+ {
|
||||
+ vm_map_wire(kernel_map, MapAddress, MapAddress + pMemFreeBSD->Core.cb, VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES);
|
||||
|
||||
/* Store start address */
|
||||
pMemFreeBSD->Core.pv = (void *)MapAddress;
|
||||
- *ppMem = &pMemFreeBSD->Core;
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
- }
|
||||
- rc = VERR_NO_MEMORY; /** @todo fix translation (borrow from darwin) */
|
||||
|
||||
- rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
+ vm_map_remove(kernel_map, MapAddress, MapAddress + pMemFreeBSD->Core.cb);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ rc = VERR_NO_MEMORY; /** @todo fix translation (borrow from darwin) */
|
||||
+ vm_object_deallocate(pMemFreeBSD->pObject);
|
||||
+ }
|
||||
return rc;
|
||||
}
|
||||
|
||||
-
|
||||
-DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
|
||||
+DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
|
||||
{
|
||||
-#ifdef USE_KMEM_ALLOC_ATTR
|
||||
- /*
|
||||
- * Use kmem_alloc_attr, fExectuable is not needed because the
|
||||
- * memory will be executable by default
|
||||
- */
|
||||
- NOREF(fExecutable);
|
||||
-
|
||||
- /* create the object. */
|
||||
- PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_LOW, NULL, cb);
|
||||
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD),
|
||||
+ RTR0MEMOBJTYPE_PAGE, NULL, cb);
|
||||
if (!pMemFreeBSD)
|
||||
return VERR_NO_MEMORY;
|
||||
|
||||
- pMemFreeBSD->Core.pv = (void *)kmem_alloc_attr(kernel_map, /* Kernel */
|
||||
- cb, /* Amount */
|
||||
- M_ZERO, /* Zero memory */
|
||||
- 0, /* Low physical address */
|
||||
- _4G - PAGE_SIZE, /* Highest physical address */
|
||||
- VM_MEMATTR_DEFAULT); /* Default memory attributes */
|
||||
- if (!pMemFreeBSD->Core.pv)
|
||||
- return VERR_NO_MEMORY;
|
||||
-
|
||||
- *ppMem = &pMemFreeBSD->Core;
|
||||
-
|
||||
- return VINF_SUCCESS;
|
||||
-#else
|
||||
- /*
|
||||
- * Try a Alloc first and see if we get luck, if not try contigmalloc.
|
||||
- * Might wish to try find our own pages or something later if this
|
||||
- * turns into a problemspot on AMD64 boxes.
|
||||
- */
|
||||
- int rc = rtR0MemObjNativeAllocPage(ppMem, cb, fExecutable);
|
||||
- if (RT_SUCCESS(rc))
|
||||
+ int rc = FreeBSDAllocHelper(pMemFreeBSD, fExecutable, ~(vm_paddr_t)0, false);
|
||||
+ if (RT_FAILURE(rc))
|
||||
{
|
||||
- size_t iPage = cb >> PAGE_SHIFT;
|
||||
- while (iPage-- > 0)
|
||||
- if (rtR0MemObjNativeGetPagePhysAddr(*ppMem, iPage) > (_4G - PAGE_SIZE))
|
||||
- {
|
||||
- RTR0MemObjFree(*ppMem, false);
|
||||
- *ppMem = NULL;
|
||||
- rc = VERR_NO_MEMORY;
|
||||
- break;
|
||||
- }
|
||||
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
+ return rc;
|
||||
}
|
||||
- if (RT_FAILURE(rc))
|
||||
- rc = rtR0MemObjNativeAllocCont(ppMem, cb, fExecutable);
|
||||
+
|
||||
+ *ppMem = &pMemFreeBSD->Core;
|
||||
return rc;
|
||||
-#endif
|
||||
}
|
||||
|
||||
|
||||
-DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
|
||||
+DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
|
||||
{
|
||||
- /* create the object. */
|
||||
- PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_CONT, NULL, cb);
|
||||
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD),
|
||||
+ RTR0MEMOBJTYPE_LOW, NULL, cb);
|
||||
if (!pMemFreeBSD)
|
||||
return VERR_NO_MEMORY;
|
||||
|
||||
- /* do the allocation. */
|
||||
- pMemFreeBSD->Core.pv = contigmalloc(cb, /* size */
|
||||
- M_IPRTMOBJ, /* type */
|
||||
- M_NOWAIT | M_ZERO, /* flags */
|
||||
- 0, /* lowest physical address*/
|
||||
- _4G-1, /* highest physical address */
|
||||
- PAGE_SIZE, /* alignment. */
|
||||
- 0); /* boundary */
|
||||
- if (pMemFreeBSD->Core.pv)
|
||||
+ int rc = FreeBSDAllocHelper(pMemFreeBSD, fExecutable, _4G - 1, false);
|
||||
+ if (RT_FAILURE(rc))
|
||||
{
|
||||
- pMemFreeBSD->Core.u.Cont.Phys = vtophys(pMemFreeBSD->Core.pv);
|
||||
- *ppMem = &pMemFreeBSD->Core;
|
||||
- return VINF_SUCCESS;
|
||||
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
+ return rc;
|
||||
}
|
||||
|
||||
- NOREF(fExecutable);
|
||||
- rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
- return VERR_NO_MEMORY;
|
||||
+ *ppMem = &pMemFreeBSD->Core;
|
||||
+ return rc;
|
||||
}
|
||||
|
||||
|
||||
-static void rtR0MemObjFreeBSDPhysPageInit(vm_page_t pPage, vm_pindex_t iPage)
|
||||
+DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable)
|
||||
{
|
||||
- pPage->wire_count = 1;
|
||||
- pPage->pindex = iPage;
|
||||
- pPage->act_count = 0;
|
||||
- pPage->oflags = 0;
|
||||
- pPage->flags = PG_UNMANAGED;
|
||||
- atomic_add_int(&cnt.v_wire_count, 1);
|
||||
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD),
|
||||
+ RTR0MEMOBJTYPE_CONT, NULL, cb);
|
||||
+ if (!pMemFreeBSD)
|
||||
+ return VERR_NO_MEMORY;
|
||||
+
|
||||
+ int rc = FreeBSDAllocHelper(pMemFreeBSD, fExecutable, _4G - 1, true);
|
||||
+ if (RT_FAILURE(rc))
|
||||
+ {
|
||||
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
+ return rc;
|
||||
+ }
|
||||
+
|
||||
+ pMemFreeBSD->Core.u.Cont.Phys = vtophys(pMemFreeBSD->Core.pv);
|
||||
+ *ppMem = &pMemFreeBSD->Core;
|
||||
+ return rc;
|
||||
}
|
||||
|
||||
|
||||
@@ -405,69 +379,36 @@
|
||||
RTHCPHYS PhysHighest, size_t uAlignment,
|
||||
bool fContiguous)
|
||||
{
|
||||
- int rc = VINF_SUCCESS;
|
||||
- uint32_t cPages = cb >> PAGE_SHIFT;
|
||||
+ uint32_t cPages = atop(cb);
|
||||
vm_paddr_t VmPhysAddrHigh;
|
||||
|
||||
/* create the object. */
|
||||
- PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJFREEBSD, u.Phys.apPages[cPages]),
|
||||
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD),
|
||||
enmType, NULL, cb);
|
||||
if (!pMemFreeBSD)
|
||||
return VERR_NO_MEMORY;
|
||||
|
||||
- pMemFreeBSD->u.Phys.cPages = cPages;
|
||||
+ pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, atop(cb));
|
||||
|
||||
if (PhysHighest != NIL_RTHCPHYS)
|
||||
VmPhysAddrHigh = PhysHighest;
|
||||
else
|
||||
VmPhysAddrHigh = ~(vm_paddr_t)0;
|
||||
|
||||
- if (fContiguous)
|
||||
- {
|
||||
- vm_page_t pPage = vm_phys_alloc_contig(cPages, 0, VmPhysAddrHigh, uAlignment, 0);
|
||||
-
|
||||
- if (pPage)
|
||||
- for (uint32_t iPage = 0; iPage < cPages; iPage++)
|
||||
- {
|
||||
- rtR0MemObjFreeBSDPhysPageInit(&pPage[iPage], iPage);
|
||||
- pMemFreeBSD->u.Phys.apPages[iPage] = &pPage[iPage];
|
||||
- }
|
||||
- else
|
||||
- rc = VERR_NO_MEMORY;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /* Allocate page by page */
|
||||
- for (uint32_t iPage = 0; iPage < cPages; iPage++)
|
||||
- {
|
||||
- vm_page_t pPage = vm_phys_alloc_contig(1, 0, VmPhysAddrHigh, uAlignment, 0);
|
||||
-
|
||||
- if (!pPage)
|
||||
- {
|
||||
- /* Free all allocated pages */
|
||||
- while (iPage-- > 0)
|
||||
- {
|
||||
- pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
- vm_page_lock_queues();
|
||||
- vm_page_unwire(pPage, 0);
|
||||
- vm_page_free(pPage);
|
||||
- vm_page_unlock_queues();
|
||||
- }
|
||||
- rc = VERR_NO_MEMORY;
|
||||
- break;
|
||||
- }
|
||||
- rtR0MemObjFreeBSDPhysPageInit(pPage, iPage);
|
||||
- pMemFreeBSD->u.Phys.apPages[iPage] = pPage;
|
||||
- }
|
||||
- }
|
||||
+ int rc = FreeBSDPhysAllocHelper(pMemFreeBSD->pObject, cPages, VmPhysAddrHigh, uAlignment, fContiguous, true);
|
||||
|
||||
- if (RT_FAILURE(rc))
|
||||
+ if (RT_FAILURE(rc)) {
|
||||
+ vm_object_deallocate(pMemFreeBSD->pObject);
|
||||
rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
+ }
|
||||
else
|
||||
{
|
||||
- if (enmType == RTR0MEMOBJTYPE_PHYS)
|
||||
+ if (fContiguous)
|
||||
{
|
||||
- pMemFreeBSD->Core.u.Phys.PhysBase = VM_PAGE_TO_PHYS(pMemFreeBSD->u.Phys.apPages[0]);
|
||||
+ Assert(enmType == RTR0MEMOBJTYPE_PHYS);
|
||||
+ VM_OBJECT_LOCK(pMemFreeBSD->pObject);
|
||||
+ pMemFreeBSD->Core.u.Phys.PhysBase = VM_PAGE_TO_PHYS(vm_page_find_least(pMemFreeBSD->pObject, 0));
|
||||
+ VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
|
||||
pMemFreeBSD->Core.u.Phys.fAllocated = true;
|
||||
}
|
||||
|
||||
@@ -480,42 +421,13 @@
|
||||
|
||||
DECLHIDDEN(int) rtR0MemObjNativeAllocPhys(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment)
|
||||
{
|
||||
-#if 1
|
||||
return rtR0MemObjFreeBSDAllocPhysPages(ppMem, RTR0MEMOBJTYPE_PHYS, cb, PhysHighest, uAlignment, true);
|
||||
-#else
|
||||
- /* create the object. */
|
||||
- PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_CONT, NULL, cb);
|
||||
- if (!pMemFreeBSD)
|
||||
- return VERR_NO_MEMORY;
|
||||
-
|
||||
- /* do the allocation. */
|
||||
- pMemFreeBSD->Core.pv = contigmalloc(cb, /* size */
|
||||
- M_IPRTMOBJ, /* type */
|
||||
- M_NOWAIT | M_ZERO, /* flags */
|
||||
- 0, /* lowest physical address*/
|
||||
- _4G-1, /* highest physical address */
|
||||
- uAlignment, /* alignment. */
|
||||
- 0); /* boundary */
|
||||
- if (pMemFreeBSD->Core.pv)
|
||||
- {
|
||||
- pMemFreeBSD->Core.u.Cont.Phys = vtophys(pMemFreeBSD->Core.pv);
|
||||
- *ppMem = &pMemFreeBSD->Core;
|
||||
- return VINF_SUCCESS;
|
||||
- }
|
||||
-
|
||||
- rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
- return VERR_NO_MEMORY;
|
||||
-#endif
|
||||
}
|
||||
|
||||
|
||||
DECLHIDDEN(int) rtR0MemObjNativeAllocPhysNC(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest)
|
||||
{
|
||||
-#if 1
|
||||
return rtR0MemObjFreeBSDAllocPhysPages(ppMem, RTR0MEMOBJTYPE_PHYS_NC, cb, PhysHighest, PAGE_SIZE, false);
|
||||
-#else
|
||||
- return VERR_NOT_SUPPORTED;
|
||||
-#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -625,49 +537,41 @@
|
||||
if (!pMemFreeBSD)
|
||||
return VERR_NO_MEMORY;
|
||||
|
||||
- /*
|
||||
- * Allocate an empty VM object and map it into the requested map.
|
||||
- */
|
||||
- pMemFreeBSD->u.NonPhys.pObject = vm_object_allocate(OBJT_DEFAULT, cb >> PAGE_SHIFT);
|
||||
- if (pMemFreeBSD->u.NonPhys.pObject)
|
||||
+ vm_offset_t MapAddress = pvFixed != (void *)-1
|
||||
+ ? (vm_offset_t)pvFixed
|
||||
+ : vm_map_min(pMap);
|
||||
+ if (pvFixed != (void *)-1)
|
||||
+ vm_map_remove(pMap,
|
||||
+ MapAddress,
|
||||
+ MapAddress + cb);
|
||||
+
|
||||
+ rc = vm_map_find(pMap, /* map */
|
||||
+ NULL, /* object */
|
||||
+ 0, /* offset */
|
||||
+ &MapAddress, /* addr (IN/OUT) */
|
||||
+ cb, /* length */
|
||||
+ pvFixed == (void *)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
|
||||
+ /* find_space */
|
||||
+ VM_PROT_NONE, /* protection */
|
||||
+ VM_PROT_ALL, /* max(_prot) ?? */
|
||||
+ 0); /* cow (copy-on-write) */
|
||||
+ if (rc == KERN_SUCCESS)
|
||||
{
|
||||
- vm_offset_t MapAddress = pvFixed != (void *)-1
|
||||
- ? (vm_offset_t)pvFixed
|
||||
- : vm_map_min(pMap);
|
||||
- if (pvFixed != (void *)-1)
|
||||
- vm_map_remove(pMap,
|
||||
- MapAddress,
|
||||
- MapAddress + cb);
|
||||
-
|
||||
- rc = vm_map_find(pMap, /* map */
|
||||
- pMemFreeBSD->u.NonPhys.pObject, /* object */
|
||||
- 0, /* offset */
|
||||
- &MapAddress, /* addr (IN/OUT) */
|
||||
- cb, /* length */
|
||||
- pvFixed == (void *)-1, /* find_space */
|
||||
- VM_PROT_NONE, /* protection */
|
||||
- VM_PROT_ALL, /* max(_prot) ?? */
|
||||
- 0); /* cow (copy-on-write) */
|
||||
- if (rc == KERN_SUCCESS)
|
||||
+ if (R0Process != NIL_RTR0PROCESS)
|
||||
{
|
||||
- if (R0Process != NIL_RTR0PROCESS)
|
||||
- {
|
||||
- rc = vm_map_inherit(pMap,
|
||||
- MapAddress,
|
||||
- MapAddress + cb,
|
||||
- VM_INHERIT_SHARE);
|
||||
- AssertMsg(rc == KERN_SUCCESS, ("%#x\n", rc));
|
||||
- }
|
||||
- pMemFreeBSD->Core.pv = (void *)MapAddress;
|
||||
- pMemFreeBSD->Core.u.ResVirt.R0Process = R0Process;
|
||||
- *ppMem = &pMemFreeBSD->Core;
|
||||
- return VINF_SUCCESS;
|
||||
+ rc = vm_map_inherit(pMap,
|
||||
+ MapAddress,
|
||||
+ MapAddress + cb,
|
||||
+ VM_INHERIT_SHARE);
|
||||
+ AssertMsg(rc == KERN_SUCCESS, ("%#x\n", rc));
|
||||
}
|
||||
- vm_object_deallocate(pMemFreeBSD->u.NonPhys.pObject);
|
||||
- rc = VERR_NO_MEMORY; /** @todo fix translation (borrow from darwin) */
|
||||
+ pMemFreeBSD->Core.pv = (void *)MapAddress;
|
||||
+ pMemFreeBSD->Core.u.ResVirt.R0Process = R0Process;
|
||||
+ *ppMem = &pMemFreeBSD->Core;
|
||||
+ return VINF_SUCCESS;
|
||||
}
|
||||
- else
|
||||
- rc = VERR_NO_MEMORY;
|
||||
+
|
||||
+ rc = VERR_NO_MEMORY; /** @todo fix translation (borrow from darwin) */
|
||||
rtR0MemObjDelete(&pMemFreeBSD->Core);
|
||||
return rc;
|
||||
|
||||
@@ -690,7 +594,7 @@
|
||||
DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, void *pvFixed, size_t uAlignment,
|
||||
unsigned fProt, size_t offSub, size_t cbSub)
|
||||
{
|
||||
- AssertMsgReturn(!offSub && !cbSub, ("%#x %#x\n", offSub, cbSub), VERR_NOT_SUPPORTED);
|
||||
+// AssertMsgReturn(!offSub && !cbSub, ("%#x %#x\n", offSub, cbSub), VERR_NOT_SUPPORTED);
|
||||
AssertMsgReturn(pvFixed == (void *)-1, ("%p\n", pvFixed), VERR_NOT_SUPPORTED);
|
||||
|
||||
/*
|
||||
@@ -699,21 +603,68 @@
|
||||
if (uAlignment > PAGE_SIZE)
|
||||
return VERR_NOT_SUPPORTED;
|
||||
|
||||
-/* Phys: see pmap_mapdev in i386/i386/pmap.c (http://fxr.watson.org/fxr/source/i386/i386/pmap.c?v=RELENG62#L2860) */
|
||||
-/** @todo finish the implementation. */
|
||||
+ int rc;
|
||||
+ PRTR0MEMOBJFREEBSD pMemToMapFreeBSD = (PRTR0MEMOBJFREEBSD)pMemToMap;
|
||||
|
||||
- return VERR_NOT_SUPPORTED;
|
||||
+ /* calc protection */
|
||||
+ vm_prot_t ProtectionFlags = 0;
|
||||
+ if ((fProt & RTMEM_PROT_NONE) == RTMEM_PROT_NONE)
|
||||
+ ProtectionFlags = VM_PROT_NONE;
|
||||
+ if ((fProt & RTMEM_PROT_READ) == RTMEM_PROT_READ)
|
||||
+ ProtectionFlags |= VM_PROT_READ;
|
||||
+ if ((fProt & RTMEM_PROT_WRITE) == RTMEM_PROT_WRITE)
|
||||
+ ProtectionFlags |= VM_PROT_WRITE;
|
||||
+ if ((fProt & RTMEM_PROT_EXEC) == RTMEM_PROT_EXEC)
|
||||
+ ProtectionFlags |= VM_PROT_EXECUTE;
|
||||
+
|
||||
+ vm_offset_t Addr = vm_map_min(kernel_map);
|
||||
+ if (cbSub == 0)
|
||||
+ cbSub = pMemToMap->cb - offSub;
|
||||
+
|
||||
+ vm_object_reference(pMemToMapFreeBSD->pObject);
|
||||
+ rc = vm_map_find(kernel_map, /* Map to insert the object in */
|
||||
+ pMemToMapFreeBSD->pObject, /* Object to map */
|
||||
+ offSub, /* Start offset in the object */
|
||||
+ &Addr, /* Start address IN/OUT */
|
||||
+ cbSub, /* Size of the mapping */
|
||||
+ VMFS_ANY_SPACE, /* Whether a suitable address should be searched for first */
|
||||
+ ProtectionFlags, /* protection flags */
|
||||
+ VM_PROT_ALL, /* Maximum protection flags */
|
||||
+ 0); /* copy-on-write and similar flags */
|
||||
+
|
||||
+ if (rc == KERN_SUCCESS)
|
||||
+ {
|
||||
+ rc = vm_map_wire(kernel_map, Addr, Addr + cbSub, VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES);
|
||||
+ AssertMsg(rc == KERN_SUCCESS, ("%#x\n", rc));
|
||||
+
|
||||
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(RTR0MEMOBJFREEBSD),
|
||||
+ RTR0MEMOBJTYPE_MAPPING,
|
||||
+ (void *)Addr,
|
||||
+ cbSub);
|
||||
+ if (pMemFreeBSD)
|
||||
+ {
|
||||
+ Assert((vm_offset_t)pMemFreeBSD->Core.pv == Addr);
|
||||
+ pMemFreeBSD->Core.u.Mapping.R0Process = NIL_RTR0PROCESS;
|
||||
+ *ppMem = &pMemFreeBSD->Core;
|
||||
+ return VINF_SUCCESS;
|
||||
+ }
|
||||
+ rc = vm_map_remove(kernel_map, Addr, Addr + cbSub);
|
||||
+ AssertMsg(rc == KERN_SUCCESS, ("Deleting mapping failed\n"));
|
||||
+ }
|
||||
+ else
|
||||
+ vm_object_deallocate(pMemToMapFreeBSD->pObject);
|
||||
+
|
||||
+ return VERR_NO_MEMORY;
|
||||
}
|
||||
|
||||
|
||||
-/* see http://markmail.org/message/udhq33tefgtyfozs */
|
||||
-DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, RTR3PTR R3PtrFixed, size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process)
|
||||
+DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, RTR3PTR R3PtrFixed, size_t uAlignment,
|
||||
+ unsigned fProt, RTR0PROCESS R0Process)
|
||||
{
|
||||
/*
|
||||
* Check for unsupported stuff.
|
||||
*/
|
||||
AssertMsgReturn(R0Process == RTR0ProcHandleSelf(), ("%p != %p\n", R0Process, RTR0ProcHandleSelf()), VERR_NOT_SUPPORTED);
|
||||
- AssertMsgReturn(R3PtrFixed == (RTR3PTR)-1, ("%p\n", R3PtrFixed), VERR_NOT_SUPPORTED);
|
||||
if (uAlignment > PAGE_SIZE)
|
||||
return VERR_NOT_SUPPORTED;
|
||||
|
||||
@@ -734,62 +685,38 @@
|
||||
ProtectionFlags |= VM_PROT_EXECUTE;
|
||||
|
||||
/* calc mapping address */
|
||||
- PROC_LOCK(pProc);
|
||||
- vm_offset_t AddrR3 = round_page((vm_offset_t)pProc->p_vmspace->vm_daddr + lim_max(pProc, RLIMIT_DATA));
|
||||
- PROC_UNLOCK(pProc);
|
||||
+ vm_offset_t AddrR3;
|
||||
+ if (R3PtrFixed == (RTR3PTR)-1)
|
||||
+ {
|
||||
+ // is this needed?
|
||||
+ PROC_LOCK(pProc);
|
||||
+ AddrR3 = round_page((vm_offset_t)pProc->p_vmspace->vm_daddr + lim_max(pProc, RLIMIT_DATA));
|
||||
+ PROC_UNLOCK(pProc);
|
||||
+ }
|
||||
+ else
|
||||
+ AddrR3 = (vm_offset_t)R3PtrFixed;
|
||||
|
||||
- /* Insert the object in the map. */
|
||||
+ /* Insert the pObject in the map. */
|
||||
+ vm_object_reference(pMemToMapFreeBSD->pObject);
|
||||
rc = vm_map_find(pProcMap, /* Map to insert the object in */
|
||||
- NULL, /* Object to map */
|
||||
+ pMemToMapFreeBSD->pObject, /* Object to map */
|
||||
0, /* Start offset in the object */
|
||||
&AddrR3, /* Start address IN/OUT */
|
||||
pMemToMap->cb, /* Size of the mapping */
|
||||
- TRUE, /* Whether a suitable address should be searched for first */
|
||||
+ R3PtrFixed == (RTR3PTR)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
|
||||
+ /* Whether a suitable address should be searched for first */
|
||||
ProtectionFlags, /* protection flags */
|
||||
VM_PROT_ALL, /* Maximum protection flags */
|
||||
- 0); /* Copy on write */
|
||||
+ 0); /* copy-on-write and similar flags */
|
||||
|
||||
- /* Map the memory page by page into the destination map. */
|
||||
if (rc == KERN_SUCCESS)
|
||||
{
|
||||
- size_t cPages = pMemToMap->cb >> PAGE_SHIFT;;
|
||||
- pmap_t pPhysicalMap = pProcMap->pmap;
|
||||
- vm_offset_t AddrR3Dst = AddrR3;
|
||||
-
|
||||
- if ( pMemToMap->enmType == RTR0MEMOBJTYPE_PHYS
|
||||
- || pMemToMap->enmType == RTR0MEMOBJTYPE_PHYS_NC
|
||||
- || pMemToMap->enmType == RTR0MEMOBJTYPE_PAGE)
|
||||
- {
|
||||
- /* Mapping physical allocations */
|
||||
- Assert(cPages == pMemToMapFreeBSD->u.Phys.cPages);
|
||||
+ rc = vm_map_wire(pProcMap, AddrR3, AddrR3 + pMemToMap->cb, VM_MAP_WIRE_USER|VM_MAP_WIRE_NOHOLES);
|
||||
+ AssertMsg(rc == KERN_SUCCESS, ("%#x\n", rc));
|
||||
|
||||
- /* Insert the memory page by page into the mapping. */
|
||||
- for (uint32_t iPage = 0; iPage < cPages; iPage++)
|
||||
- {
|
||||
- vm_page_t pPage = pMemToMapFreeBSD->u.Phys.apPages[iPage];
|
||||
+ rc = vm_map_inherit(pProcMap, AddrR3, AddrR3 + pMemToMap->cb, VM_INHERIT_SHARE);
|
||||
+ AssertMsg(rc == KERN_SUCCESS, ("%#x\n", rc));
|
||||
|
||||
- MY_PMAP_ENTER(pPhysicalMap, AddrR3Dst, pPage, ProtectionFlags, TRUE);
|
||||
- AddrR3Dst += PAGE_SIZE;
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /* Mapping cont or low memory types */
|
||||
- vm_offset_t AddrToMap = (vm_offset_t)pMemToMap->pv;
|
||||
-
|
||||
- for (uint32_t iPage = 0; iPage < cPages; iPage++)
|
||||
- {
|
||||
- vm_page_t pPage = PHYS_TO_VM_PAGE(vtophys(AddrToMap));
|
||||
-
|
||||
- MY_PMAP_ENTER(pPhysicalMap, AddrR3Dst, pPage, ProtectionFlags, TRUE);
|
||||
- AddrR3Dst += PAGE_SIZE;
|
||||
- AddrToMap += PAGE_SIZE;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (RT_SUCCESS(rc))
|
||||
- {
|
||||
/*
|
||||
* Create a mapping object for it.
|
||||
*/
|
||||
@@ -805,9 +732,11 @@
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
- rc = vm_map_remove(pProcMap, ((vm_offset_t)AddrR3), ((vm_offset_t)AddrR3) + pMemToMap->cb);
|
||||
+ rc = vm_map_remove(pProcMap, AddrR3, AddrR3 + pMemToMap->cb);
|
||||
AssertMsg(rc == KERN_SUCCESS, ("Deleting mapping failed\n"));
|
||||
}
|
||||
+ else
|
||||
+ vm_object_deallocate(pMemToMapFreeBSD->pObject);
|
||||
|
||||
return VERR_NO_MEMORY;
|
||||
}
|
||||
@@ -855,49 +784,47 @@
|
||||
return NIL_RTHCPHYS;
|
||||
}
|
||||
|
||||
- vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + (iPage << PAGE_SHIFT);
|
||||
+ vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + ptoa(iPage);
|
||||
|
||||
struct proc *pProc = (struct proc *)pMemFreeBSD->Core.u.Lock.R0Process;
|
||||
struct vm_map *pProcMap = &pProc->p_vmspace->vm_map;
|
||||
- pmap_t pPhysicalMap = pProcMap->pmap;
|
||||
+ pmap_t pPhysicalMap = vm_map_pmap(pProcMap);
|
||||
|
||||
return pmap_extract(pPhysicalMap, pb);
|
||||
}
|
||||
|
||||
case RTR0MEMOBJTYPE_MAPPING:
|
||||
{
|
||||
- vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + (iPage << PAGE_SHIFT);
|
||||
+ vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + ptoa(iPage);
|
||||
|
||||
if (pMemFreeBSD->Core.u.Mapping.R0Process != NIL_RTR0PROCESS)
|
||||
VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
|
||||
vm_object_deallocate(pMemFreeBSD->pObject);
|
||||
break;
|
||||
@@ -263,11 +268,15 @@ static int rtR0MemObjFreeBSDPhysAllocHelper(vm_object_t pObject, u_long cPages,
|
||||
while (iPage-- > 0)
|
||||
{
|
||||
struct proc *pProc = (struct proc *)pMemFreeBSD->Core.u.Mapping.R0Process;
|
||||
struct vm_map *pProcMap = &pProc->p_vmspace->vm_map;
|
||||
- pmap_t pPhysicalMap = pProcMap->pmap;
|
||||
+ pmap_t pPhysicalMap = vm_map_pmap(pProcMap);
|
||||
|
||||
return pmap_extract(pPhysicalMap, pb);
|
||||
pPage = vm_page_lookup(pObject, iPage);
|
||||
+#if __FreeBSD_version < 900000
|
||||
vm_page_lock_queues();
|
||||
+#endif
|
||||
if (fWire)
|
||||
vm_page_unwire(pPage, 0);
|
||||
vm_page_free(pPage);
|
||||
+#if __FreeBSD_version < 900000
|
||||
vm_page_unlock_queues();
|
||||
+#endif
|
||||
}
|
||||
return vtophys(pb);
|
||||
}
|
||||
|
||||
- case RTR0MEMOBJTYPE_CONT:
|
||||
- return pMemFreeBSD->Core.u.Cont.Phys + (iPage << PAGE_SHIFT);
|
||||
-
|
||||
- case RTR0MEMOBJTYPE_PHYS:
|
||||
- return pMemFreeBSD->Core.u.Phys.PhysBase + (iPage << PAGE_SHIFT);
|
||||
-
|
||||
case RTR0MEMOBJTYPE_PAGE:
|
||||
- case RTR0MEMOBJTYPE_PHYS_NC:
|
||||
- return VM_PAGE_TO_PHYS(pMemFreeBSD->u.Phys.apPages[iPage]);
|
||||
-
|
||||
-#ifdef USE_KMEM_ALLOC_ATTR
|
||||
case RTR0MEMOBJTYPE_LOW:
|
||||
+ case RTR0MEMOBJTYPE_PHYS_NC:
|
||||
{
|
||||
- vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + (iPage << PAGE_SHIFT);
|
||||
- return vtophys(pb);
|
||||
+ RTHCPHYS addr;
|
||||
+ VM_OBJECT_LOCK(pMemFreeBSD->pObject);
|
||||
+ addr = VM_PAGE_TO_PHYS(vm_page_lookup(pMemFreeBSD->pObject, iPage));
|
||||
+ VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
|
||||
+ return addr;
|
||||
}
|
||||
-#else
|
||||
- case RTR0MEMOBJTYPE_LOW:
|
||||
-#endif
|
||||
+
|
||||
+ case RTR0MEMOBJTYPE_PHYS:
|
||||
+ return pMemFreeBSD->Core.u.Cont.Phys + ptoa(iPage);
|
||||
+
|
||||
+ case RTR0MEMOBJTYPE_CONT:
|
||||
+ return pMemFreeBSD->Core.u.Phys.PhysBase + ptoa(iPage);
|
||||
+
|
||||
case RTR0MEMOBJTYPE_RES_VIRT:
|
||||
default:
|
||||
return NIL_RTHCPHYS;
|
||||
VM_OBJECT_UNLOCK(pObject);
|
||||
return rcNoMem;
|
||||
--
|
||||
1.7.11.5
|
||||
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2013-09-06 12:30:30.000000000 +0000
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-09-21 18:12:53.000000000 +0000
|
||||
@@ -286,9 +286,15 @@
|
||||
pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, cPages);
|
||||
|
||||
/* No additional object reference for auto-deallocation upon unmapping. */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ rc = vm_map_find(kernel_map, pMemFreeBSD->pObject, 0,
|
||||
+ &MapAddress, pMemFreeBSD->Core.cb, 0, VMFS_ANY_SPACE,
|
||||
+ fExecutable ? VM_PROT_ALL : VM_PROT_RW, VM_PROT_ALL, 0);
|
||||
+#else
|
||||
rc = vm_map_find(kernel_map, pMemFreeBSD->pObject, 0,
|
||||
&MapAddress, pMemFreeBSD->Core.cb, VMFS_ANY_SPACE,
|
||||
fExecutable ? VM_PROT_ALL : VM_PROT_RW, VM_PROT_ALL, 0);
|
||||
+#endif
|
||||
|
||||
if (rc == KERN_SUCCESS)
|
||||
{
|
||||
@@ -551,6 +557,9 @@
|
||||
0, /* offset */
|
||||
&MapAddress, /* addr (IN/OUT) */
|
||||
cb, /* length */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ 0, /* max addr */
|
||||
+#endif
|
||||
pvFixed == (void *)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
|
||||
/* find_space */
|
||||
VM_PROT_NONE, /* protection */
|
||||
@@ -628,6 +637,9 @@
|
||||
offSub, /* Start offset in the object */
|
||||
&Addr, /* Start address IN/OUT */
|
||||
cbSub, /* Size of the mapping */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ 0, /* Upper bound of mapping */
|
||||
+#endif
|
||||
VMFS_ANY_SPACE, /* Whether a suitable address should be searched for first */
|
||||
ProtectionFlags, /* protection flags */
|
||||
VM_PROT_ALL, /* Maximum protection flags */
|
||||
@@ -704,6 +716,9 @@
|
||||
0, /* Start offset in the object */
|
||||
&AddrR3, /* Start address IN/OUT */
|
||||
pMemToMap->cb, /* Size of the mapping */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ 0, /* Upper bound of the mapping */
|
||||
+#endif
|
||||
R3PtrFixed == (RTR3PTR)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
|
||||
/* Whether a suitable address should be searched for first */
|
||||
ProtectionFlags, /* protection flags */
|
|
@ -1,6 +1,8 @@
|
|||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2013-05-10 15:16:34.000000000 +0200
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-05-10 12:43:20.000000000 +0200
|
||||
@@ -165,7 +165,11 @@
|
||||
$FreeBSD$
|
||||
|
||||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-03-20 19:19:36.795745576 -0700
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-03-20 19:15:35.164791970 -0700
|
||||
@@ -162,7 +162,11 @@
|
||||
case RTR0MEMOBJTYPE_PHYS:
|
||||
case RTR0MEMOBJTYPE_PHYS_NC:
|
||||
{
|
||||
|
@ -12,41 +14,40 @@
|
|||
vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
|
||||
#if __FreeBSD_version < 900000
|
||||
/* See http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037963.html */
|
||||
@@ -177,8 +181,14 @@
|
||||
{
|
||||
vm_page_unwire(pPage, 0);
|
||||
}
|
||||
+#if __FreeBSD_version < 900000
|
||||
@@ -177,7 +181,12 @@
|
||||
#if __FreeBSD_version < 900000
|
||||
vm_page_unlock_queues();
|
||||
+#endif
|
||||
#endif
|
||||
+#if __FreeBSD_version >= 1000030
|
||||
+ VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
|
||||
+#else
|
||||
VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
|
||||
+#endif
|
||||
+
|
||||
vm_object_deallocate(pMemFreeBSD->pObject);
|
||||
break;
|
||||
}
|
||||
@@ -205,9 +215,17 @@
|
||||
flags |= VM_ALLOC_WIRED;
|
||||
while (1)
|
||||
@@ -205,10 +214,18 @@
|
||||
|
||||
while (cTries <= 1)
|
||||
{
|
||||
+#if __FreeBSD_version >= 1000030
|
||||
+ VM_OBJECT_WLOCK(pObject);
|
||||
+#else
|
||||
VM_OBJECT_LOCK(pObject);
|
||||
+#endif
|
||||
pPages = vm_page_alloc_contig(pObject, iPIndex, flags, cPages, 0, VmPhysAddrHigh, uAlignment, 0, VM_MEMATTR_DEFAULT);
|
||||
pPages = vm_page_alloc_contig(pObject, iPIndex, fFlags, cPages, 0,
|
||||
VmPhysAddrHigh, uAlignment, 0, VM_MEMATTR_DEFAULT);
|
||||
+#if __FreeBSD_version >= 1000030
|
||||
+ VM_OBJECT_WUNLOCK(pObject);
|
||||
+#else
|
||||
VM_OBJECT_UNLOCK(pObject);
|
||||
+#endif
|
||||
if (pPages || tries >= 1)
|
||||
if (pPages)
|
||||
break;
|
||||
vm_pageout_grow_cache(tries, 0, VmPhysAddrHigh);
|
||||
@@ -226,7 +244,11 @@
|
||||
}
|
||||
vm_pageout_grow_cache(cTries, 0, VmPhysAddrHigh);
|
||||
@@ -228,7 +245,11 @@
|
||||
|
||||
if (!pPages)
|
||||
return pPages;
|
||||
+#if __FreeBSD_version >= 1000030
|
||||
|
@ -57,7 +58,7 @@
|
|||
for (vm_pindex_t iPage = 0; iPage < cPages; iPage++)
|
||||
{
|
||||
vm_page_t pPage = pPages + iPage;
|
||||
@@ -238,7 +260,11 @@
|
||||
@@ -240,7 +261,11 @@
|
||||
atomic_add_int(&cnt.v_wire_count, 1);
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +70,7 @@
|
|||
return pPages;
|
||||
#endif
|
||||
}
|
||||
@@ -261,7 +287,11 @@
|
||||
@@ -264,7 +289,11 @@
|
||||
if (!pPage)
|
||||
{
|
||||
/* Free all allocated pages */
|
||||
|
@ -81,23 +82,19 @@
|
|||
while (iPage-- > 0)
|
||||
{
|
||||
pPage = vm_page_lookup(pObject, iPage);
|
||||
@@ -271,9 +301,15 @@
|
||||
if (fWire)
|
||||
vm_page_unwire(pPage, 0);
|
||||
vm_page_free(pPage);
|
||||
+#if __FreeBSD_version < 900000
|
||||
@@ -278,7 +307,11 @@
|
||||
vm_page_unlock_queues();
|
||||
+#endif
|
||||
#endif
|
||||
}
|
||||
+#if __FreeBSD_version >= 1000030
|
||||
+ VM_OBJECT_WUNLOCK(pObject);
|
||||
+#else
|
||||
VM_OBJECT_UNLOCK(pObject);
|
||||
+#endif
|
||||
return VERR_NO_MEMORY;
|
||||
return rcNoMem;
|
||||
}
|
||||
}
|
||||
@@ -406,9 +442,17 @@
|
||||
@@ -411,9 +444,17 @@
|
||||
if (fContiguous)
|
||||
{
|
||||
Assert(enmType == RTR0MEMOBJTYPE_PHYS);
|
||||
|
@ -115,7 +112,7 @@
|
|||
pMemFreeBSD->Core.u.Phys.fAllocated = true;
|
||||
}
|
||||
|
||||
@@ -813,9 +857,17 @@
|
||||
@@ -823,9 +864,17 @@
|
||||
case RTR0MEMOBJTYPE_PHYS_NC:
|
||||
{
|
||||
RTHCPHYS addr;
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
- Fix INVARIANTS warning:
|
||||
acquiring duplicate lock of same type: "IPRT Fast Mutex Semaphore"
|
||||
|
||||
Submitted by: avg
|
||||
--- src/VBox/Runtime/r0drv/freebsd/semfastmutex-r0drv-freebsd.c.orig 2011-11-04 12:19:54.000000000 +0100
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/semfastmutex-r0drv-freebsd.c 2011-12-06 23:12:49.233297685 +0100
|
||||
@@ -66,7 +66,7 @@
|
||||
if (pThis)
|
||||
{
|
||||
pThis->u32Magic = RTSEMFASTMUTEX_MAGIC;
|
||||
- sx_init(&pThis->SxLock, "IPRT Fast Mutex Semaphore");
|
||||
+ sx_init_flags(&pThis->SxLock, "IPRT Fast Mutex Semaphore", SX_DUPOK);
|
||||
|
||||
*phFastMtx = pThis;
|
||||
return VINF_SUCCESS;
|
|
@ -0,0 +1,20 @@
|
|||
Without this patch any waits for periods shorter than a single tick return
|
||||
immediately leading to a lot of unnecessary spinning. For example, I observe that
|
||||
my guest's idle loop does a lot of sleeps with periods slightly shorter than 1 ms
|
||||
(1/hz), e.g. 900us. All that waiting turns into pure spinning and VirtualBox eats
|
||||
100% of a core.
|
||||
The patch improves the situation significantly. Also, it (approximately) follows
|
||||
what tvtohz does.
|
||||
|
||||
Submitted by: Andriy Gapon <avg@FreeBSD.org>
|
||||
--- src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h.orig 2012-12-19 19:27:29.000000000 +0100
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h 2012-12-20 12:07:48.941861966 +0100
|
||||
@@ -82,6 +82,8 @@
|
||||
uint64_t cTicks = ASMMultU64ByU32DivByU32(uTimeout, hz, UINT32_C(1000000000));
|
||||
if (cTicks >= INT_MAX)
|
||||
return RTSEMWAIT_FLAGS_INDEFINITE;
|
||||
+ else if (cTicks == 0 && uTimeout > 0)
|
||||
+ pWait->iTimeout = 1;
|
||||
else
|
||||
pWait->iTimeout = (int)cTicks;
|
||||
#endif
|
|
@ -1,5 +1,7 @@
|
|||
--- src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h.orig 2012-12-19 20:51:59.000000000 +0100
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h 2013-05-10 12:40:19.000000000 +0200
|
||||
$FreeBSD$
|
||||
|
||||
--- src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h 2012-12-19 10:27:29.000000000 -0800
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h 2013-03-20 19:10:15.854804053 -0700
|
||||
@@ -50,6 +50,9 @@
|
||||
#include <sys/unistd.h>
|
||||
#include <sys/kthread.h>
|
||||
|
|
|
@ -4,8 +4,7 @@
|
|||
#
|
||||
|
||||
# PROVIDE: vboxnet
|
||||
# REQUIRE: FILESYSTEMS
|
||||
# BEFORE: netif
|
||||
# REQUIRE: FILESYSTEMS NETWORKING ldconfig
|
||||
# KEYWORD: nojail
|
||||
|
||||
#
|
||||
|
@ -41,6 +40,9 @@ vboxnet_start()
|
|||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# initialize configured host-only interfaces
|
||||
%%PREFIX%%/bin/VBoxManage list hostonlyifs >/dev/null
|
||||
}
|
||||
|
||||
vboxnet_stop()
|
||||
|
|
|
@ -4,4 +4,4 @@ feature rich, high performance product for enterprise customers, it
|
|||
is also the only professional solution that is freely available as
|
||||
Open Source Software under the terms of the GNU General Public License.
|
||||
|
||||
WWW: http://www.virtualbox.org/
|
||||
WWW: http://www.virtualbox.org/
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= virtualbox-ose
|
||||
DISTVERSION= 4.1.24
|
||||
PORTREVISION= 1
|
||||
DISTVERSION= 4.2.20
|
||||
CATEGORIES= emulators
|
||||
MASTER_SITES= http://download.virtualbox.org/virtualbox/${DISTVERSION}/ \
|
||||
http://tmp.chruetertee.ch/ \
|
||||
|
@ -13,7 +12,6 @@ PKGNAMESUFFIX= -legacy
|
|||
DISTFILES= VirtualBox-${DISTVERSION}${EXTRACT_SUFX} ${GADISTFILES}
|
||||
EXTRACT_ONLY= VirtualBox-${DISTVERSION}${EXTRACT_SUFX}
|
||||
|
||||
#for discussion please use emulation@FreeBSD.org
|
||||
MAINTAINER= vbox@FreeBSD.org
|
||||
COMMENT= A general-purpose full virtualizer for x86 hardware
|
||||
|
||||
|
@ -26,10 +24,10 @@ BUILD_DEPENDS= yasm:${PORTSDIR}/devel/yasm \
|
|||
kmk:${PORTSDIR}/devel/kBuild \
|
||||
gtar:${PORTSDIR}/archivers/gtar \
|
||||
cdrecord:${PORTSDIR}/sysutils/cdrtools
|
||||
LIB_DEPENDS= png15:${PORTSDIR}/graphics/png \
|
||||
xslt.2:${PORTSDIR}/textproc/libxslt \
|
||||
curl:${PORTSDIR}/ftp/curl
|
||||
RUN_DEPENDS= /boot/modules/vboxdrv.ko:${PORTSDIR}/emulators/virtualbox-ose-kmod-legacy \
|
||||
LIB_DEPENDS= libpng.so:${PORTSDIR}/graphics/png \
|
||||
libxslt.so:${PORTSDIR}/textproc/libxslt \
|
||||
libcurl.so:${PORTSDIR}/ftp/curl
|
||||
RUN_DEPENDS= ${KMODDIR}/vboxdrv.ko:${PORTSDIR}/emulators/virtualbox-ose-kmod-legacy \
|
||||
cdrecord:${PORTSDIR}/sysutils/cdrtools
|
||||
|
||||
WRKSRC= ${WRKDIR}/VirtualBox-${PORTVERSION}
|
||||
|
@ -50,18 +48,20 @@ CONFIGURE_ARGS+=--with-gcc="${CC}" --with-g++="${CXX}" --passive-mesa
|
|||
USE_LDCONFIG= ${PREFIX}/lib/virtualbox
|
||||
|
||||
CONFLICTS= bcc-[0-9]*
|
||||
CONFLICTS_INSTALL= virtualbox-ose-[3,4]* virtualbox-ose-devel-[3,4]* virtualbox-ose-additions-[3,4]* virtualbox-ose-additions-devel-[3,4]*
|
||||
CONFLICTS_INSTALL= virtualbox-ose-4* virtualbox-ose-devel-4* virtualbox-ose-additions-4* virtualbox-ose-additions-devel-4*
|
||||
|
||||
VBOXUSER?= vboxusers
|
||||
VBOXWSUSER?= vboxusers
|
||||
VBOXGROUP?= vboxusers
|
||||
USERS= ${VBOXUSER}
|
||||
GROUPS= ${VBOXGROUP}
|
||||
VBOX_FRONTENDS= VBoxHeadless
|
||||
VBOX_FRONTENDS= VBoxAutostart VBoxHeadless
|
||||
VBOX_GUEST_VER= ${PORTVERSION}
|
||||
|
||||
OPTIONS_DEFINE= QT4 DEBUG GUESTADDITIONS DBUS PULSEAUDIO UDPTUNNEL VDE VNC WEBSERVICE NLS X11
|
||||
OPTIONS_DEFAULT= QT4 DBUS X11 UDPTUNNEL
|
||||
OPTIONS_DEFAULT= QT4 DBUS X11 UDPTUNNEL VNC
|
||||
OPTIONS_SUB= X11 QT4 GUESTADDITIONS VNC NLS WEBSERVICE
|
||||
DEBUG_DESC= Debug symbols, additional logs and assertions
|
||||
QT4_DESC= Build with QT4 Frontend
|
||||
GUESTADDITIONS_DESC= Build with Guest Additions
|
||||
UDPTUNNEL_DESC= Build with UDP tunnel support
|
||||
|
@ -69,19 +69,42 @@ VDE_DESC= Build with VDE support
|
|||
VNC_DESC= Build with VNC support
|
||||
WEBSERVICE_DESC= Build Webservice
|
||||
|
||||
PULSEAUDIO_LIB_DEPENDS= libpulse.so:${PORTSDIR}/audio/pulseaudio
|
||||
PULSEAUDIO_CONFIGURE_OFF= --disable-pulse
|
||||
|
||||
DBUS_LIB_DEPENDS= libdbus-1.so:${PORTSDIR}/devel/dbus
|
||||
DBUS_CONFIGURE_OFF= --disable-dbus
|
||||
|
||||
VNC_LIB_DEPENDS= libvncserver.so:${PORTSDIR}/net/libvncserver
|
||||
VNC_CONFIGURE_ON= --enable-vnc
|
||||
|
||||
VDE_RUN_DEPENDS= vde_switch:${PORTSDIR}/net/vde2
|
||||
VDE_CONFIGURE_ON= --enable-vde
|
||||
|
||||
# bmake doesn't know about unsetenv=true
|
||||
.if defined(.PARSEDIR)
|
||||
ENV=
|
||||
.export ENV
|
||||
.else
|
||||
.SHELL: path="/bin/sh" unsetenv=true
|
||||
.endif
|
||||
|
||||
NO_STAGE= yes
|
||||
.include <bsd.port.options.mk>
|
||||
|
||||
KMODDIR= /boot/modules
|
||||
|
||||
PLIST_SUB+= PYTHON_VER=${PYTHON_VER} \
|
||||
PYTHON_VERU=${PYTHON_VER:S/./_/} \
|
||||
GUEST_VER=${VBOX_GUEST_VER}
|
||||
|
||||
SUB_LIST+= VBOXUSER=${VBOXUSER}
|
||||
USE_RC_SUBR+= vboxheadless
|
||||
SUB_LIST+= VBOXUSER=${VBOXUSER} \
|
||||
VBOXWSUSER=${VBOXWSUSER}
|
||||
USE_RC_SUBR+= vboxheadless vboxwatchdog
|
||||
|
||||
KMK_BUILDTYPE= release
|
||||
KMK_CONFIG= VBOX_LIBPATH_X11=${LOCALBASE} VBOX_FREEBSD_SRC=${SRC_BASE}/sys
|
||||
KMK_FLAGS=
|
||||
KMK_FLAGS= -j 1
|
||||
|
||||
.if empty(PORT_OPTIONS:MQT4) && !empty(PORT_OPTIONS:MNLS)
|
||||
BROKEN= NLS support requires QT4 frontend. Run 'make config' again!
|
||||
|
@ -95,10 +118,8 @@ BROKEN= QT4 frontend requires X11 support. Run 'make config' again!
|
|||
USE_SDL= sdl
|
||||
USE_XORG= xcursor xmu inputproto xinerama
|
||||
VBOX_FRONTENDS+=VBoxBFE VBoxSDL
|
||||
PLIST_SUB+= X11=""
|
||||
.else
|
||||
CONFIGURE_ARGS+=--build-headless
|
||||
PLIST_SUB+= X11="@comment "
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MQT4}
|
||||
|
@ -106,10 +127,8 @@ QT_NONSTANDARD= yes
|
|||
USE_QT4= gui network moc_build uic_build rcc_build linguist
|
||||
INSTALLS_ICONS= yes
|
||||
VBOX_FRONTENDS+=VirtualBox VBoxTestOGL
|
||||
PLIST_SUB+= QT4=""
|
||||
.else
|
||||
CONFIGURE_ARGS+=--disable-qt4
|
||||
PLIST_SUB+= QT4="@comment "
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MGUESTADDITIONS}
|
||||
|
@ -117,51 +136,17 @@ GUESTADDITIONS= VBoxGuestAdditions_${VBOX_GUEST_VER}.iso
|
|||
GADISTFILES= ${GUESTADDITIONS}:guestadditions
|
||||
RESTRICTED= for personal use only
|
||||
RESTRICTED_FILES= ${GUESTADDITIONS}
|
||||
PLIST_SUB+= GUESTADDITIONS=""
|
||||
.else
|
||||
PLIST_SUB+= GUESTADDITIONS="@comment "
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MDEBUG}
|
||||
KMK_FLAGS+= BUILD_TYPE=debug
|
||||
KMK_BUILDTYPE= debug
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MDBUS}
|
||||
LIB_DEPENDS+= dbus-1.3:${PORTSDIR}/devel/dbus
|
||||
.else
|
||||
CONFIGURE_ARGS+=--disable-dbus
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MPULSEAUDIO}
|
||||
LIB_DEPENDS+= pulse.0:${PORTSDIR}/audio/pulseaudio
|
||||
.else
|
||||
CONFIGURE_ARGS+=--disable-pulse
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MVNC}
|
||||
LIB_DEPENDS+= vncserver.0:${PORTSDIR}/net/libvncserver
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MNLS}
|
||||
PLIST_SUB+= NLS=""
|
||||
.else
|
||||
PLIST_SUB+= NLS="@comment "
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MVDE}
|
||||
RUN_DEPENDS+= vde_switch:${PORTSDIR}/net/vde2
|
||||
CONFIGURE_ARGS+=--enable-vde
|
||||
KMK_FLAGS+= BUILD_TYPE=debug
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MWEBSERVICE}
|
||||
BUILD_DEPENDS+= soapcpp2:${PORTSDIR}/devel/gsoap
|
||||
VBOX_WEB= vboxwebsrv webtest
|
||||
USE_RC_SUBR+= vboxwebsrv
|
||||
SUB_LIST+= VBOXWSUSER=${VBOXWSUSER}
|
||||
PLIST_SUB+= WEB=""
|
||||
.else
|
||||
PLIST_SUB+= WEB="@comment "
|
||||
.endif
|
||||
|
||||
.if ${ARCH} == i386
|
||||
|
@ -172,16 +157,10 @@ KMK_ARCH= freebsd.${ARCH}
|
|||
PLIST_SUB+= I386="@comment "
|
||||
.endif
|
||||
|
||||
PLIST_SUB+= ARCH="${KMK_ARCH}"
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
.if ${OSVERSION} < 802000
|
||||
BROKEN= Does not compile on FreeBSD < 8.2
|
||||
.endif
|
||||
|
||||
.if ${OSVERSION} > 900012
|
||||
EXTRA_PATCHES+= ${FILESDIR}/extrapatch-include-iprt-string.h
|
||||
.endif
|
||||
|
||||
.if ${OSVERSION} < 900000 && ${OSVERSION} > 801500
|
||||
EXTRA_PATCHES+= ${FILESDIR}/extrapatch-src-VBox-Devices-PC-vbox.dsl
|
||||
.endif
|
||||
|
@ -198,7 +177,7 @@ pre-everything::
|
|||
post-patch:
|
||||
@${ECHO} 'VBOX_PATH_APP_PRIVATE_ARCH = ${PREFIX}/lib/virtualbox' > ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_PATH_SHARED_LIBS = ${PREFIX}/lib/virtualbox' >> ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_WITH_RUNPATH = ${PREFIX}/lib/virtualbox' >> ${WRKSRC}/LocalConfig.kmk
|
||||
@var=${_GCC_RUNTIME}; ${ECHO} "VBOX_WITH_RUNPATH = $${var:+$${var}:}${PREFIX}/lib/virtualbox" >> ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_PATH_APP_PRIVATE = ${DATADIR}' >> ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_PATH_APP_DOCS = ${DOCSDIR}' >> ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_WITH_INSTALLER = 1' >> ${WRKSRC}/LocalConfig.kmk
|
||||
|
@ -212,10 +191,7 @@ post-patch:
|
|||
@${ECHO} 'VBOX_WITH_ADDITIONS=' >> ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_WITH_X11_ADDITIONS=' >> ${WRKSRC}/LocalConfig.kmk
|
||||
.if ${PORT_OPTIONS:MVNC}
|
||||
@${ECHO} 'VBOX_WITH_VNC = 1' >> ${WRKSRC}/LocalConfig.kmk
|
||||
.endif
|
||||
.if ${OSVERSION} < 800069
|
||||
@${ECHO} 'VBOX_WITH_USB=' >> ${WRKSRC}/LocalConfig.kmk
|
||||
@${ECHO} 'VBOX_WITH_EXTPACK_VNC = 1' >> ${WRKSRC}/LocalConfig.kmk
|
||||
.endif
|
||||
.if ${PORT_OPTIONS:MUDPTUNNEL}
|
||||
@${ECHO} 'VBOX_WITH_UDPTUNNEL = 1' >> ${WRKSRC}/LocalConfig.kmk
|
||||
|
@ -274,8 +250,13 @@ do-install:
|
|||
${CHMOD} 0711 ${PREFIX}/lib/virtualbox/${f}
|
||||
.endfor
|
||||
|
||||
.if ${PORT_OPTIONS:MVNC}
|
||||
${MKDIR} ${PREFIX}/lib/virtualbox/ExtensionPacks
|
||||
${CP} -a ${WRKSRC}/out/${KMK_ARCH}/${KMK_BUILDTYPE}/bin/ExtensionPacks/VNC ${PREFIX}/lib/virtualbox/ExtensionPacks
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MWEBSERVICE}
|
||||
${MKDIR} -p ${DATADIR}/sdk/bindings/webservice
|
||||
${MKDIR} ${DATADIR}/sdk/bindings/webservice
|
||||
.for f in vboxweb.wsdl vboxwebService.wsdl
|
||||
${INSTALL_DATA} ${WRKSRC}/out/${KMK_ARCH}/${KMK_BUILDTYPE}/bin/sdk/bindings/webservice/${f} ${DATADIR}/sdk/bindings/webservice/
|
||||
.endfor
|
||||
|
@ -304,7 +285,9 @@ post-install:
|
|||
@${FIND} ${PREFIX}/lib/virtualbox -type d -print0 | ${XARGS} -0 ${CHMOD} 755
|
||||
|
||||
.if ${PORT_OPTIONS:MQT4}
|
||||
${MKDIR} ${PREFIX}/share/pixmaps/
|
||||
${INSTALL_DATA} ${WRKSRC}/src/VBox/Frontends/VirtualBox/images/OSE/VirtualBox_48px.png ${PREFIX}/share/pixmaps/VBox.png
|
||||
${MKDIR} ${PREFIX}/share/applications/
|
||||
${INSTALL_DATA} ${WRKSRC}/src/VBox/Installer/freebsd/virtualbox.desktop ${PREFIX}/share/applications/virtualbox.desktop
|
||||
.endif
|
||||
@${CAT} ${PKGMESSAGE}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
SHA256 (VirtualBox-4.1.24.tar.bz2) = 74008b8e8942045668c1b7d06b0a4bb5fe8464066e343e3a2e1ba30b94ce8a7f
|
||||
SIZE (VirtualBox-4.1.24.tar.bz2) = 74612732
|
||||
SHA256 (VBoxGuestAdditions_4.1.24.iso) = 6db32584eb4e2ace0fd5fbbd9d63bdb8f50f0c28821d03dafd0ed1018d133cc7
|
||||
SIZE (VBoxGuestAdditions_4.1.24.iso) = 53532672
|
||||
SHA256 (VirtualBox-4.2.20.tar.bz2) = 193aa3ce7c0e700fe6a12b64bf462ce633a856f1e831ee4a337cc3439b21df61
|
||||
SIZE (VirtualBox-4.2.20.tar.bz2) = 77050211
|
||||
SHA256 (VBoxGuestAdditions_4.2.20.iso) = 2fb3aa0f370d503b0e77725dbec76b989a251f613abee378f53c1fed9d6edf01
|
||||
SIZE (VBoxGuestAdditions_4.2.20.iso) = 59664384
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
--- include/iprt/string.h.orig 2010-04-28 01:02:16.000000000 +0200
|
||||
+++ include/iprt/string.h 2010-06-17 16:20:14.000000000 +0200
|
||||
@@ -60,7 +60,6 @@
|
||||
#if (defined(RT_OS_DARWIN) && defined(KERNEL)) \
|
||||
|| (defined(RT_OS_FREEBSD) && defined(_KERNEL))
|
||||
RT_C_DECLS_BEGIN
|
||||
-void *memchr(const void *pv, int ch, size_t cb);
|
||||
char *strpbrk(const char *pszStr, const char *pszChars);
|
||||
RT_C_DECLS_END
|
||||
#endif
|
58
emulators/virtualbox-ose-legacy/files/patch-Config.kmk
Normal file
58
emulators/virtualbox-ose-legacy/files/patch-Config.kmk
Normal file
|
@ -0,0 +1,58 @@
|
|||
--- Config.kmk.orig 2013-10-15 13:01:31.000000000 +0200
|
||||
+++ Config.kmk 2013-10-20 14:43:19.015746151 +0200
|
||||
@@ -3387,16 +3387,16 @@
|
||||
$(VBOX_GCC_WARN) -Wpointer-arith -Winline $(VBOX_GCC_Wno-pointer-sign) $(VBOX_GCC_fdiagnostics-show-option) \
|
||||
-Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \
|
||||
-Wimplicit-function-declaration -Werror-implicit-function-declaration \
|
||||
- -O2 -fformat-extensions -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
+ -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
$(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
|
||||
-nostdinc -std=c99
|
||||
-TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2
|
||||
+TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2
|
||||
TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 --param inline-unit-growth=100 --param large-function-growth=1000 \
|
||||
-fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \
|
||||
-mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -Wundef
|
||||
TEMPLATE_VBOXR0DRV_CXXFLAGS = -fno-exceptions -fno-rtti \
|
||||
$(VBOX_GCC_WARN) -Wpointer-arith -Winline \
|
||||
- -O2 -fno-format-extensions -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
+ -O2 -fno-strict-aliasing -fno-common -finline-limit=8000 \
|
||||
$(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
|
||||
-nostdinc
|
||||
TEMPLATE_VBOXR0DRV_CXXFLAGS.x86 = $(TEMPLATE_VBOXR0DRV_CFLAGS.x86)
|
||||
@@ -3630,8 +3630,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXR3EXE_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
else ifeq ($(KBUILD_TARGET),solaris)
|
||||
TEMPLATE_VBOXR3EXE_TOOL = GXX3PLAIN
|
||||
@@ -4206,8 +4204,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXMAINEXE_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
else ifeq ($(KBUILD_TARGET),solaris)
|
||||
TEMPLATE_VBOXMAINEXE_TOOL = GXX3PLAIN
|
||||
@@ -4673,8 +4669,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXQT4GUIEXE_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
endif
|
||||
ifeq ($(KBUILD_TARGET),solaris)
|
||||
@@ -4869,8 +4863,6 @@
|
||||
/usr/X11R6/include \
|
||||
/usr/local/include
|
||||
TEMPLATE_VBOXBLDPROG_LIBPATH += \
|
||||
- /usr/lib \
|
||||
- /usr/X11R6/lib \
|
||||
/usr/local/lib
|
||||
else ifeq ($(KBUILD_HOST),solaris)
|
||||
TEMPLATE_VBOXBLDPROG_TOOL = GXX3PLAIN
|
|
@ -1,10 +1,21 @@
|
|||
--- configure.orig 2011-05-30 17:11:26.000000000 +0200
|
||||
+++ configure 2011-06-06 10:01:12.000000000 +0200
|
||||
@@ -1920,7 +1920,7 @@
|
||||
--- configure.orig 2012-03-16 10:34:01.000000000 +0100
|
||||
+++ configure 2012-03-24 18:52:57.271018829 +0100
|
||||
@@ -135,6 +135,8 @@
|
||||
LIBPULSE="-L/usr/local/lib"
|
||||
INCPNG="-I/usr/local/include"
|
||||
LIBPNG="-L/usr/local/lib -lpng"
|
||||
+ INCVNCSERVER="-I/usr/local/include"
|
||||
+ LIBVNCSERVER="-L/usr/local/lib"
|
||||
else
|
||||
INCCURL=""
|
||||
LIBCURL="-lcurl"
|
||||
@@ -1837,8 +1839,8 @@
|
||||
echo "compiling the following source file:" >> $LOG
|
||||
cat $ODIR.tmp_src.cc >> $LOG
|
||||
echo "using the following command line:" >> $LOG
|
||||
echo "$CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so" >> $LOG
|
||||
- echo "$CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so" >> $LOG
|
||||
- $CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so >> $LOG 2>&1
|
||||
+ echo "$CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so -pthread" >> $LOG
|
||||
+ $CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so -pthread >> $LOG 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
found=1
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
--- include/iprt/types.h.orig 2012-03-05 10:48:48.000000000 +0100
|
||||
+++ include/iprt/types.h 2012-03-05 11:21:25.000000000 +0100
|
||||
@@ -82,6 +82,8 @@
|
||||
# include <stddef.h>
|
||||
# define _UINT64_T_DECLARED
|
||||
# define _INT64_T_DECLARED
|
||||
+# define _UINTPTR_T_DECLARED
|
||||
+# define _INTPTR_T_DECLARED
|
||||
# include <sys/types.h>
|
||||
|
||||
# elif defined(RT_OS_LINUX) && defined(__KERNEL__)
|
|
@ -0,0 +1,19 @@
|
|||
Fix recording with OSS Audio backend to record at a proper volume
|
||||
|
||||
Obtained from: https://www.virtualbox.org/ticket/10695
|
||||
--- src/VBox/Devices/Audio/ossaudio.c.orig 2012-12-19 19:26:32.000000000 +0100
|
||||
+++ src/VBox/Devices/Audio/ossaudio.c 2012-12-20 12:23:18.476851732 +0100
|
||||
@@ -795,13 +795,8 @@
|
||||
hw->info.align + 1);
|
||||
}
|
||||
read_samples += nread >> hwshift;
|
||||
-#ifndef VBOX
|
||||
hw->conv (hw->conv_buf + bufs[i].add, p, nread >> hwshift,
|
||||
&nominal_volume);
|
||||
-#else
|
||||
- hw->conv (hw->conv_buf + bufs[i].add, p, nread >> hwshift,
|
||||
- &pcm_in_volume);
|
||||
-#endif
|
||||
}
|
||||
|
||||
if (bufs[i].len - nread) {
|
|
@ -0,0 +1,22 @@
|
|||
Fix ich9 bios to correctly configure pci bridge1 and pci bridge2
|
||||
|
||||
avg: I think that it is a valid report, the patch is not perfect, but
|
||||
avg: it fixes the problem for most configurations and demonstrates the problem well
|
||||
avg: the explanation for them is that FreeBSD (unlike Linux and maybe other OSes)
|
||||
avg: entirely relies on platform doing correct bus numbering
|
||||
avg: currently we can not do any re-numbering/corrections
|
||||
|
||||
See: http://article.gmane.org/gmane.os.freebsd.devel.emulation/10438
|
||||
Submitted by: Gustau Perez i Querol <gperez@entel.upc.edu>
|
||||
--- src/VBox/Devices/Bus/DevPciIch9.cpp.orig 2012-06-15 21:22:15.000000000 +0200
|
||||
+++ src/VBox/Devices/Bus/DevPciIch9.cpp 2012-09-02 14:17:49.804118887 +0200
|
||||
@@ -1812,7 +1812,8 @@
|
||||
PICH9PCIBUS pChildBus = PDMINS_2_DATA(pBridge->pDevIns, PICH9PCIBUS);
|
||||
ich9pciInitBridgeTopology(pGlobals, pChildBus);
|
||||
}
|
||||
- PCIDevSetByte(pBridgeDev, VBOX_PCI_SUBORDINATE_BUS, pGlobals->uBus);
|
||||
+ PCIDevSetByte(pBridgeDev, VBOX_PCI_PRIMARY_BUS, 0);
|
||||
+ PCIDevSetByte(pBridgeDev, VBOX_PCI_SUBORDINATE_BUS, (pGlobals->uBus)-1);
|
||||
Log2(("ich9pciInitBridgeTopology: for bus %p: primary=%d secondary=%d subordinate=%d\n",
|
||||
pBus,
|
||||
PCIDevGetByte(pBridgeDev, VBOX_PCI_PRIMARY_BUS),
|
|
@ -1,25 +0,0 @@
|
|||
- Add support for files to VBoxManage createrawvmdk. Currently
|
||||
it only supports character devices so it failes like this:
|
||||
|
||||
VBoxManage internalcommands createrawvmdk -filename test.vmdk -rawdisk /vbox/HardDisks/test.img
|
||||
VBoxManage: error: File '/vbox/HardDisks/test.img' is no character device
|
||||
VBoxManage: error: The raw disk vmdk file was not created
|
||||
|
||||
Submitted by: Pawel Jakub Dawidek <pjd@FreeBSD.org>
|
||||
--- src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp.orig 2011-12-13 11:18:43.424439415 +0100
|
||||
+++ src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp 2011-12-13 11:22:01.554438862 +0100
|
||||
@@ -1140,9 +1140,13 @@
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
+ else if (S_ISREG(DevStat.st_mode))
|
||||
+ {
|
||||
+ cbSize = DevStat.st_size;
|
||||
+ }
|
||||
else
|
||||
{
|
||||
- RTMsgError("File '%s' is no character device", rawdisk.c_str());
|
||||
+ RTMsgError("File '%s' is neither character device nor regular file", rawdisk.c_str());
|
||||
vrc = VERR_INVALID_PARAMETER;
|
||||
goto out;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
--- src/VBox/Frontends/VirtualBox/Makefile.kmk.orig 2013-10-16 21:47:09.588793988 +0400
|
||||
+++ src/VBox/Frontends/VirtualBox/Makefile.kmk 2013-10-16 21:47:37.458794265 +0400
|
||||
@@ -175,10 +175,6 @@
|
||||
# Necessary for the hdd backend enumeration
|
||||
VirtualBox_LIBS = $(LIB_DDU)
|
||||
|
||||
-if1of ($(KBUILD_TARGET), linux freebsd netbsd openbsd)
|
||||
- VirtualBox_LIBS += dl
|
||||
-endif
|
||||
-
|
||||
# This library is required for multi-monitor support
|
||||
VirtualBox_LIBS.linux += Xinerama
|
||||
VirtualBox_LIBS.solaris += Xinerama
|
|
@ -1,27 +0,0 @@
|
|||
--- src/VBox/HostDrivers/Makefile.kmk.orig 2010-03-04 12:59:54.000000000 +0100
|
||||
+++ src/VBox/HostDrivers/Makefile.kmk 2010-03-09 12:54:09.000000000 +0100
|
||||
@@ -40,7 +40,7 @@
|
||||
endif
|
||||
endif
|
||||
|
||||
- if1of ($(KBUILD_TARGET),linux freebsd)
|
||||
+ if1of ($(KBUILD_TARGET),linux)
|
||||
#
|
||||
# Install the Makefile for module compliation on Linux and FreeBSD hosts
|
||||
#
|
||||
@@ -51,6 +51,7 @@
|
||||
HostDrivers-src_SOURCES.freebsd = freebsd/Makefile
|
||||
endif
|
||||
|
||||
+if 0
|
||||
if1of ($(KBUILD_TARGET),freebsd)
|
||||
#
|
||||
# Install the export_modules script for tar'ing the module sources on FreeBSD hosts
|
||||
@@ -60,6 +61,7 @@
|
||||
HostDrivers-sh_MODE = a+rx,u+w
|
||||
HostDrivers-sh_SOURCES.freebsd = freebsd/export_modules
|
||||
endif
|
||||
+endif
|
||||
endif # !defined(VBOX_ONLY_DOCS) && !defined(VBOX_ONLY_TESTSUITE)
|
||||
|
||||
# Let kBuild generate the rules.
|
|
@ -1,15 +0,0 @@
|
|||
- Fix path for libpam.so on FreeBSD
|
||||
|
||||
Submitted by: Landon Fuller <landonf at plausible.coop>
|
||||
Sponsored by: Plausible Labs Cooperative, Inc.
|
||||
--- src/VBox/HostServices/auth/pam/VBoxAuthPAM.c.orig 2012-04-03 14:11:56.000000000 +0200
|
||||
+++ src/VBox/HostServices/auth/pam/VBoxAuthPAM.c 2012-04-05 12:44:48.000000000 +0200
|
||||
@@ -62,6 +62,8 @@
|
||||
/* The name of the PAM library */
|
||||
# ifdef RT_OS_SOLARIS
|
||||
# define PAM_LIB_NAME "libpam.so.1"
|
||||
+# elif defined(RT_OS_FREEBSD)
|
||||
+# define PAM_LIB_NAME "libpam.so"
|
||||
# else
|
||||
# define PAM_LIB_NAME "libpam.so.0"
|
||||
# endif
|
|
@ -0,0 +1,13 @@
|
|||
--- src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp.orig 2012-10-19 19:51:26.256773940 +0400
|
||||
+++ src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp 2012-10-19 19:51:49.835771918 +0400
|
||||
@@ -109,5 +109,10 @@
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
+int getDiskListByFs(const char *name, DiskList& list)
|
||||
+{
|
||||
+ return VERR_NOT_IMPLEMENTED;
|
||||
+}
|
||||
+
|
||||
} /* namespace pm */
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
- Remove debugging fprintf in MachineImpl.cpp to fix build with GCC 4.6
|
||||
|
||||
Submitted by: Andriy Gapon <avg at FreeBSD.org>
|
||||
--- src/VBox/Main/src-server/MachineImpl.cpp.orig 2012-04-03 14:12:01.000000000 +0200
|
||||
+++ src/VBox/Main/src-server/MachineImpl.cpp 2012-04-13 10:49:25.000000000 +0200
|
||||
@@ -6643,7 +6643,6 @@
|
||||
|
||||
Utf8Str idStr = mData->mUuid.toString();
|
||||
const char * args[] = {szPath, "--comment", mUserData->s.strName.c_str(), "--startvm", idStr.c_str(), 0 };
|
||||
- fprintf(stderr, "SDL=%s\n", szPath);
|
||||
vrc = RTProcCreate(szPath, args, env, 0, &pid);
|
||||
}
|
||||
#else /* !VBOX_WITH_VBOXSDL */
|
|
@ -0,0 +1,10 @@
|
|||
--- src/VBox/Main/src-server/freebsd/HostHardwareFreeBSD.cpp.orig 2012-12-19 19:27:17.000000000 +0100
|
||||
+++ src/VBox/Main/src-server/freebsd/HostHardwareFreeBSD.cpp 2012-12-20 14:55:59.501850255 +0100
|
||||
@@ -40,6 +40,7 @@
|
||||
# include <sys/stat.h>
|
||||
# include <unistd.h>
|
||||
# include <sys/ioctl.h>
|
||||
+# include <stdio.h>
|
||||
# include <fcntl.h>
|
||||
# include <cam/cam.h>
|
||||
# include <cam/cam_ccb.h>
|
|
@ -1,26 +1,10 @@
|
|||
This patch adds support for IFT_L2VLAN interfaces in the
|
||||
FreeBSD implementation of NetIfList(), treating them
|
||||
identically as IFT_ETHER interfaces.
|
||||
|
||||
Submitted by: Landon J Fuller <landonf at plausible dot coop>
|
||||
Sponsored by: Plausible Labs Cooperative, Inc
|
||||
--- src/VBox/Main/src-server/freebsd/NetIf-freebsd.cpp.orig 2012-04-10 11:28:41.552067907 -0400
|
||||
+++ src/VBox/Main/src-server/freebsd/NetIf-freebsd.cpp 2012-04-10 11:28:45.872069027 -0400
|
||||
@@ -268,7 +268,7 @@
|
||||
pNext += pIfAddrMsg->ifam_msglen;
|
||||
}
|
||||
--- src/VBox/Main/src-server/freebsd/NetIf-freebsd.cpp.orig 2012-12-19 19:27:17.000000000 +0100
|
||||
+++ src/VBox/Main/src-server/freebsd/NetIf-freebsd.cpp 2012-12-20 14:55:59.492850918 +0100
|
||||
@@ -44,6 +44,7 @@
|
||||
#include <netinet/in.h>
|
||||
|
||||
- if (pSdl->sdl_type == IFT_ETHER)
|
||||
+ if (pSdl->sdl_type == IFT_ETHER || pSdl->sdl_type == IFT_L2VLAN)
|
||||
{
|
||||
struct ifreq IfReq;
|
||||
strcpy(IfReq.ifr_name, pNew->szShortName);
|
||||
@@ -373,7 +373,7 @@
|
||||
pNext += pIfAddrMsg->ifam_msglen;
|
||||
}
|
||||
#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
- if (!fSkip && pSdl->sdl_type == IFT_ETHER)
|
||||
+ if (!fSkip && (pSdl->sdl_type == IFT_ETHER || pSdl->sdl_type == IFT_L2VLAN))
|
||||
{
|
||||
size_t cbNameLen = pSdl->sdl_nlen + 1;
|
||||
memcpy(pInfo->MACAddress.au8, LLADDR(pSdl), sizeof(pInfo->MACAddress.au8));
|
||||
|
|
|
@ -1,254 +0,0 @@
|
|||
Fix building with libxslt newer than 1.1.26.
|
||||
|
||||
Obtained from: https://www.virtualbox.org/ticket/10940
|
||||
--- src/VBox/Main/webservice/websrv-wsdl.xsl 2012-10-26 18:24:53.000000000 +0200
|
||||
+++ src/VBox/Main/webservice/websrv-wsdl.xsl 2012-12-17 10:44:59.000001310 +0100
|
||||
@@ -93,6 +93,7 @@
|
||||
targetNamespace="http://schemas.xmlsoap.org/wsdl/"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
||||
xmlns:vbox="http://www.virtualbox.org/"
|
||||
xmlns:exsl="http://exslt.org/common"
|
||||
@@ -460,7 +461,7 @@
|
||||
<xsl:param name="_params" />
|
||||
<xsl:param name="_valuetype" /> <!-- optional, for attribute setter messages -->
|
||||
|
||||
- <message>
|
||||
+ <wsdl:message>
|
||||
<xsl:attribute name="name"><xsl:value-of select="concat($_ifname, $G_classSeparator, $_methodname, $G_methodRequest)" /></xsl:attribute>
|
||||
|
||||
<xsl:call-template name="convertTypeAndEmitPartOrElement">
|
||||
@@ -469,10 +470,10 @@
|
||||
<xsl:with-param name="name" select="'parameters'" />
|
||||
<xsl:with-param name="type" select="$G_typeIsGlobalRequestElementMarker" />
|
||||
<xsl:with-param name="safearray" select="'no'" />
|
||||
- <xsl:with-param name="elname" select="'part'" /> <!-- "part" or "element" -->
|
||||
+ <xsl:with-param name="elname" select="'wsdl:part'" /> <!-- "part" or "element" -->
|
||||
<xsl:with-param name="attrname" select="'element'" /> <!-- attrib of part of element: <part type=...> or <part element=...> or <element type=...> -->
|
||||
</xsl:call-template>
|
||||
- </message>
|
||||
+ </wsdl:message>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
@@ -485,7 +486,7 @@
|
||||
<xsl:param name="_params" /> <!-- set of parameter elements -->
|
||||
<xsl:param name="_resulttype" /> <!-- for attribute getter methods only -->
|
||||
|
||||
- <message>
|
||||
+ <wsdl:message>
|
||||
<xsl:attribute name="name"><xsl:copy-of select="$_ifname" /><xsl:value-of select="$G_classSeparator" /><xsl:value-of select="$_methodname" /><xsl:copy-of select="$G_methodResponse" /></xsl:attribute>
|
||||
|
||||
<!-- <xsl:variable name="cOutParams" select="count($_params[@dir='out']) + count($_params[@dir='return'])" /> -->
|
||||
@@ -495,10 +496,10 @@
|
||||
<xsl:with-param name="name" select="'parameters'" />
|
||||
<xsl:with-param name="type" select="$G_typeIsGlobalResponseElementMarker" />
|
||||
<xsl:with-param name="safearray" select="'no'" />
|
||||
- <xsl:with-param name="elname" select="'part'" /> <!-- "part" or "element" -->
|
||||
+ <xsl:with-param name="elname" select="'wsdl:part'" /> <!-- "part" or "element" -->
|
||||
<xsl:with-param name="attrname" select="'element'" /> <!-- attrib of part of element: <part type=...> or <part element=...> or <element type=...> -->
|
||||
</xsl:call-template>
|
||||
- </message>
|
||||
+ </wsdl:message>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
@@ -543,13 +544,13 @@
|
||||
<xsl:with-param name="_methodname" select="$attrSetter" />
|
||||
<xsl:with-param name="_params" select="/.." /> <!-- empty set -->
|
||||
<xsl:with-param name="_valuetype" select="$attrtype" />
|
||||
- <xsl:with-param name="elname" select="'part'" /> <!-- "part" or "element" -->
|
||||
+ <xsl:with-param name="elname" select="'wsdl:part'" /> <!-- "part" or "element" -->
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="emitResultMessage">
|
||||
<xsl:with-param name="_ifname" select="$ifname" />
|
||||
<xsl:with-param name="_methodname" select="$attrSetter" />
|
||||
<xsl:with-param name="_params" select="/.." /> <!-- empty set -->
|
||||
- <xsl:with-param name="elname" select="'part'" /> <!-- "part" or "element" -->
|
||||
+ <xsl:with-param name="elname" select="'wsdl:part'" /> <!-- "part" or "element" -->
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
@@ -566,7 +567,7 @@
|
||||
|
||||
<xsl:call-template name="debugMsg"><xsl:with-param name="msg" select="concat('....emitInOutOperation ', $_ifname, '::', $_methodname)" /></xsl:call-template>
|
||||
|
||||
- <operation>
|
||||
+ <wsdl:operation>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="concat($_ifname, '_', $_methodname)" />
|
||||
</xsl:attribute>
|
||||
@@ -577,7 +578,7 @@
|
||||
<xsl:attribute name="style"><xsl:value-of select="$G_basefmt" /></xsl:attribute>
|
||||
</soap:operation>
|
||||
</xsl:if>
|
||||
- <input>
|
||||
+ <wsdl:input>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$_fSoap">
|
||||
<soap:body>
|
||||
@@ -589,10 +590,10 @@
|
||||
<xsl:attribute name="message">vbox:<xsl:copy-of select="$_ifname" /><xsl:value-of select="$G_classSeparator" /><xsl:value-of select="$_methodname" /><xsl:copy-of select="$G_methodRequest" /></xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
- </input>
|
||||
+ </wsdl:input>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$_resulttype">
|
||||
- <output>
|
||||
+ <wsdl:output>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$_fSoap">
|
||||
<soap:body>
|
||||
@@ -604,11 +605,11 @@
|
||||
<xsl:attribute name="message">vbox:<xsl:copy-of select="$_ifname" /><xsl:value-of select="$G_classSeparator" /><xsl:value-of select="$_methodname" /><xsl:copy-of select="$G_methodResponse" /></xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
- </output>
|
||||
+ </wsdl:output>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- <xsl:if test="count($_params[@dir='out'] | $_params[@dir='return']) > 0"> -->
|
||||
- <output>
|
||||
+ <wsdl:output>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$_fSoap">
|
||||
<soap:body>
|
||||
@@ -620,29 +621,29 @@
|
||||
<xsl:attribute name="message">vbox:<xsl:copy-of select="$_ifname" /><xsl:value-of select="$G_classSeparator" /><xsl:value-of select="$_methodname" /><xsl:copy-of select="$G_methodResponse" /></xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
- </output>
|
||||
+ </wsdl:output>
|
||||
<!-- </xsl:if> -->
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="not($_fSoap)">
|
||||
- <fault name="InvalidObjectFault" message="vbox:InvalidObjectFaultMsg" />
|
||||
- <fault name="RuntimeFault" message="vbox:RuntimeFaultMsg" />
|
||||
+ <wsdl:fault name="InvalidObjectFault" message="vbox:InvalidObjectFaultMsg" />
|
||||
+ <wsdl:fault name="RuntimeFault" message="vbox:RuntimeFaultMsg" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
- <fault name="InvalidObjectFault">
|
||||
+ <wsdl:fault name="InvalidObjectFault">
|
||||
<soap:fault name="InvalidObjectFault">
|
||||
<xsl:attribute name="use"><xsl:value-of select="$G_parmfmt" /></xsl:attribute>
|
||||
</soap:fault>
|
||||
- </fault>
|
||||
- <fault name="RuntimeFault">
|
||||
+ </wsdl:fault>
|
||||
+ <wsdl:fault name="RuntimeFault">
|
||||
<soap:fault name="RuntimeFault">
|
||||
<xsl:attribute name="use"><xsl:value-of select="$G_parmfmt" /></xsl:attribute>
|
||||
</soap:fault>
|
||||
- </fault>
|
||||
+ </wsdl:fault>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
- </operation>
|
||||
+ </wsdl:operation>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
@@ -742,7 +743,7 @@
|
||||
<xsl:with-param name="_wsmap" select="$wsmap" />
|
||||
<xsl:with-param name="_methodname" select="$methodname" />
|
||||
<xsl:with-param name="_params" select="param" />
|
||||
- <xsl:with-param name="elname" select="'part'" /> <!-- "part" or "element" -->
|
||||
+ <xsl:with-param name="elname" select="'wsdl:part'" /> <!-- "part" or "element" -->
|
||||
</xsl:call-template>
|
||||
<!-- emit a second "result" message only if the method has "out" arguments or a return value -->
|
||||
<!-- <xsl:if test="(count(param[@dir='out'] | param[@dir='return']) > 0)"> -->
|
||||
@@ -751,7 +752,7 @@
|
||||
<xsl:with-param name="_wsmap" select="$wsmap" />
|
||||
<xsl:with-param name="_methodname" select="@name" />
|
||||
<xsl:with-param name="_params" select="param" />
|
||||
- <xsl:with-param name="elname" select="'part'" /> <!-- "part" or "element" -->
|
||||
+ <xsl:with-param name="elname" select="'wsdl:part'" /> <!-- "part" or "element" -->
|
||||
</xsl:call-template>
|
||||
<!-- </xsl:if> -->
|
||||
</xsl:otherwise>
|
||||
@@ -956,10 +957,9 @@
|
||||
and emit complexTypes for all method arguments and return values.
|
||||
-->
|
||||
<xsl:template match="library">
|
||||
- <definitions
|
||||
+ <wsdl:definitions
|
||||
name="VirtualBox"
|
||||
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
|
||||
- <xsl:attribute name="xmlns">http://schemas.xmlsoap.org/wsdl/</xsl:attribute>
|
||||
<xsl:attribute name="targetNamespace"><xsl:value-of select="$G_targetNamespace" /></xsl:attribute>
|
||||
<!-- at top of WSDL file, dump a <types> section with user-defined types -->
|
||||
<xsl:comment>
|
||||
@@ -969,7 +969,7 @@
|
||||
*
|
||||
******************************************************
|
||||
</xsl:comment>
|
||||
- <types>
|
||||
+ <wsdl:types>
|
||||
<xsd:schema>
|
||||
<xsl:attribute name="targetNamespace"><xsl:value-of select='$G_targetNamespace' /></xsl:attribute>
|
||||
|
||||
@@ -1193,14 +1193,14 @@
|
||||
</xsd:schema>
|
||||
|
||||
|
||||
- </types>
|
||||
+ </wsdl:types>
|
||||
|
||||
- <message name="InvalidObjectFaultMsg">
|
||||
- <part name="fault" element="vbox:InvalidObjectFault" />
|
||||
- </message>
|
||||
- <message name="RuntimeFaultMsg">
|
||||
- <part name="fault" element="vbox:RuntimeFault" />
|
||||
- </message>
|
||||
+ <wsdl:message name="InvalidObjectFaultMsg">
|
||||
+ <wsdl:part name="fault" element="vbox:InvalidObjectFault" />
|
||||
+ </wsdl:message>
|
||||
+ <wsdl:message name="RuntimeFaultMsg">
|
||||
+ <wsdl:part name="fault" element="vbox:RuntimeFault" />
|
||||
+ </wsdl:message>
|
||||
|
||||
<xsl:comment>
|
||||
******************************************************
|
||||
@@ -1241,7 +1241,7 @@
|
||||
******************************************************
|
||||
</xsl:comment>
|
||||
|
||||
- <portType>
|
||||
+ <wsdl:portType>
|
||||
<xsl:attribute name="name"><xsl:copy-of select="'vbox'" /><xsl:value-of select="$G_portTypeSuffix" /></xsl:attribute>
|
||||
|
||||
<xsl:for-each select="//interface">
|
||||
@@ -1261,7 +1261,7 @@
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
- </portType>
|
||||
+ </wsdl:portType>
|
||||
|
||||
<xsl:comment>
|
||||
******************************************************
|
||||
@@ -1271,7 +1271,7 @@
|
||||
******************************************************
|
||||
</xsl:comment>
|
||||
|
||||
- <binding>
|
||||
+ <wsdl:binding>
|
||||
<xsl:attribute name="name"><xsl:value-of select="concat('vbox', $G_bindingSuffix)" /></xsl:attribute>
|
||||
<xsl:attribute name="type"><xsl:value-of select="concat('vbox:vbox', $G_portTypeSuffix)" /></xsl:attribute>
|
||||
|
||||
@@ -1297,9 +1297,9 @@
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
- </binding>
|
||||
+ </wsdl:binding>
|
||||
|
||||
- </definitions>
|
||||
+ </wsdl:definitions>
|
||||
</xsl:template>
|
|
@ -0,0 +1,11 @@
|
|||
--- src/VBox/Runtime/Makefile.kmk.orig 2013-06-21 16:27:18.000000000 +0400
|
||||
+++ src/VBox/Runtime/Makefile.kmk 2013-06-30 14:57:33.248215681 +0400
|
||||
@@ -844,7 +844,7 @@
|
||||
r3/posix/RTMemProtect-posix.cpp \
|
||||
r3/posix/RTPathUserHome-posix.cpp \
|
||||
r3/posix/RTSystemQueryOSInfo-posix.cpp \
|
||||
- r3/posix/RTSystemQueryTotalRam-posix.cpp \
|
||||
+ r3/freebsd/RTSystemQueryTotalRam-freebsd.cpp \
|
||||
r3/posix/RTTimeNow-posix.cpp \
|
||||
r3/posix/RTTimeSet-posix.cpp \
|
||||
r3/posix/dir-posix.cpp \
|
|
@ -0,0 +1,16 @@
|
|||
--- src/VBox/Runtime/r0drv/freebsd/alloc-r0drv-freebsd.c 2013-09-06 06:30:30.000000000 -0600
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/alloc-r0drv-freebsd.c 2013-09-18 12:01:45.000000000 -0600
|
||||
@@ -79,8 +79,13 @@
|
||||
return VERR_NO_EXEC_MEMORY;
|
||||
|
||||
/* Addr contains a start address vm_map_find will start searching for suitable space at. */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ int rc = vm_map_find(kernel_map, pVmObject, 0, &Addr,
|
||||
+ cbAllocated, 0, VMFS_ANY_SPACE, VM_PROT_ALL, VM_PROT_ALL, 0);
|
||||
+#else
|
||||
int rc = vm_map_find(kernel_map, pVmObject, 0, &Addr,
|
||||
cbAllocated, TRUE, VM_PROT_ALL, VM_PROT_ALL, 0);
|
||||
+#endif
|
||||
if (rc == KERN_SUCCESS)
|
||||
{
|
||||
rc = vm_map_wire(kernel_map, Addr, Addr + cbAllocated,
|
|
@ -1,53 +1,56 @@
|
|||
From Alan L. Cox on FreeBSD-current:
|
||||
|
||||
I just glanced at the virtualbox code for a couple minutes. For
|
||||
I just glanced at the virtualbox code for a couple minutes. For
|
||||
FreeBSD 9 and 10, these lock acquires are completely unnecessary, and
|
||||
have been since FreeBSD 9.0. Just delete them. They may be equally
|
||||
have been since FreeBSD 9.0. Just delete them. They may be equally
|
||||
unnecessary under FreeBSD 8, but I didn't look carefully enough to
|
||||
answer that question.
|
||||
|
||||
[1] http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037963.html
|
||||
---
|
||||
src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2012-12-19 20:51:59.000000000 +0100
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2012-12-20 15:14:56.283850834 +0100
|
||||
@@ -136,7 +136,10 @@
|
||||
(vm_offset_t)pMemFreeBSD->Core.pv + pMemFreeBSD->Core.cb);
|
||||
AssertMsg(rc == KERN_SUCCESS, ("%#x", rc));
|
||||
|
||||
diff --git a/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c b/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
|
||||
index 5c90cf3..1176b51 100644
|
||||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
|
||||
@@ -164,14 +164,19 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
|
||||
{
|
||||
VM_OBJECT_LOCK(pMemFreeBSD->pObject);
|
||||
vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
|
||||
+#if __FreeBSD_version < 900000
|
||||
+ /* See http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037963.html */
|
||||
vm_page_lock_queues();
|
||||
+#endif
|
||||
for (uint32_t iPage = 0; iPage < pMemFreeBSD->u.Phys.cPages; iPage++)
|
||||
for (vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
|
||||
pPage != NULL;
|
||||
pPage = vm_page_next(pPage))
|
||||
{
|
||||
vm_page_t pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
@@ -191,7 +194,9 @@
|
||||
case RTR0MEMOBJTYPE_PHYS:
|
||||
case RTR0MEMOBJTYPE_PHYS_NC:
|
||||
{
|
||||
vm_page_unwire(pPage, 0);
|
||||
}
|
||||
+#if __FreeBSD_version < 900000
|
||||
vm_page_lock_queues();
|
||||
vm_page_unlock_queues();
|
||||
+#endif
|
||||
for (uint32_t iPage = 0; iPage < pMemFreeBSD->u.Phys.cPages; iPage++)
|
||||
VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
|
||||
vm_object_deallocate(pMemFreeBSD->pObject);
|
||||
break;
|
||||
@@ -263,11 +268,15 @@ static int rtR0MemObjFreeBSDPhysAllocHelper(vm_object_t pObject, u_long cPages,
|
||||
while (iPage-- > 0)
|
||||
{
|
||||
vm_page_t pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
@@ -266,7 +271,9 @@
|
||||
while (iPage-- > 0)
|
||||
{
|
||||
pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
pPage = vm_page_lookup(pObject, iPage);
|
||||
+#if __FreeBSD_version < 900000
|
||||
vm_page_lock_queues();
|
||||
vm_page_lock_queues();
|
||||
+#endif
|
||||
if (fWire)
|
||||
vm_page_unwire(pPage, 0);
|
||||
vm_page_free(pPage);
|
||||
vm_page_unlock_queues();
|
||||
@@ -448,7 +455,9 @@
|
||||
while (iPage-- > 0)
|
||||
{
|
||||
pPage = pMemFreeBSD->u.Phys.apPages[iPage];
|
||||
vm_page_free(pPage);
|
||||
+#if __FreeBSD_version < 900000
|
||||
vm_page_lock_queues();
|
||||
vm_page_unlock_queues();
|
||||
+#endif
|
||||
vm_page_unwire(pPage, 0);
|
||||
vm_page_free(pPage);
|
||||
vm_page_unlock_queues();
|
||||
}
|
||||
VM_OBJECT_UNLOCK(pObject);
|
||||
return rcNoMem;
|
||||
--
|
||||
1.7.11.5
|
||||
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2013-09-06 12:30:30.000000000 +0000
|
||||
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-09-21 18:12:53.000000000 +0000
|
||||
@@ -286,9 +286,15 @@
|
||||
pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, cPages);
|
||||
|
||||
/* No additional object reference for auto-deallocation upon unmapping. */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ rc = vm_map_find(kernel_map, pMemFreeBSD->pObject, 0,
|
||||
+ &MapAddress, pMemFreeBSD->Core.cb, 0, VMFS_ANY_SPACE,
|
||||
+ fExecutable ? VM_PROT_ALL : VM_PROT_RW, VM_PROT_ALL, 0);
|
||||
+#else
|
||||
rc = vm_map_find(kernel_map, pMemFreeBSD->pObject, 0,
|
||||
&MapAddress, pMemFreeBSD->Core.cb, VMFS_ANY_SPACE,
|
||||
fExecutable ? VM_PROT_ALL : VM_PROT_RW, VM_PROT_ALL, 0);
|
||||
+#endif
|
||||
|
||||
if (rc == KERN_SUCCESS)
|
||||
{
|
||||
@@ -551,6 +557,9 @@
|
||||
0, /* offset */
|
||||
&MapAddress, /* addr (IN/OUT) */
|
||||
cb, /* length */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ 0, /* max addr */
|
||||
+#endif
|
||||
pvFixed == (void *)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
|
||||
/* find_space */
|
||||
VM_PROT_NONE, /* protection */
|
||||
@@ -628,6 +637,9 @@
|
||||
offSub, /* Start offset in the object */
|
||||
&Addr, /* Start address IN/OUT */
|
||||
cbSub, /* Size of the mapping */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ 0, /* Upper bound of mapping */
|
||||
+#endif
|
||||
VMFS_ANY_SPACE, /* Whether a suitable address should be searched for first */
|
||||
ProtectionFlags, /* protection flags */
|
||||
VM_PROT_ALL, /* Maximum protection flags */
|
||||
@@ -704,6 +716,9 @@
|
||||
0, /* Start offset in the object */
|
||||
&AddrR3, /* Start address IN/OUT */
|
||||
pMemToMap->cb, /* Size of the mapping */
|
||||
+#if __FreeBSD_version >= 1000055
|
||||
+ 0, /* Upper bound of the mapping */
|
||||
+#endif
|
||||
R3PtrFixed == (RTR3PTR)-1 ? VMFS_ANY_SPACE : VMFS_NO_SPACE,
|
||||
/* Whether a suitable address should be searched for first */
|
||||
ProtectionFlags, /* protection flags */
|
|
@ -0,0 +1,83 @@
|
|||
--- ./src/VBox/Runtime/r3/freebsd/RTSystemQueryTotalRam-freebsd.cpp.ORIG 2013-06-30 09:27:59.000000000 +0200
|
||||
+++ ./src/VBox/Runtime/r3/freebsd/RTSystemQueryTotalRam-freebsd.cpp 2013-06-30 09:51:29.000000000 +0200
|
||||
@@ -0,0 +1,80 @@
|
||||
+/* $Id: RTSystemQueryTotalRam-freebsd.cpp $ */
|
||||
+/** @file
|
||||
+ * IPRT - RTSystemQueryTotalRam, FreeBSD style
|
||||
+ */
|
||||
+
|
||||
+/*
|
||||
+ * Copyright (C) 2013 Martin Birgmeier, Oracle Corporation
|
||||
+ *
|
||||
+ * This file is part of VirtualBox Open Source Edition (OSE), as
|
||||
+ * available from http://www.virtualbox.org. This file is free software;
|
||||
+ * you can redistribute it and/or modify it under the terms of the GNU
|
||||
+ * General Public License (GPL) as published by the Free Software
|
||||
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
|
||||
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
||||
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
||||
+ *
|
||||
+ * The contents of this file may alternatively be used under the terms
|
||||
+ * of the Common Development and Distribution License Version 1.0
|
||||
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
|
||||
+ * VirtualBox OSE distribution, in which case the provisions of the
|
||||
+ * CDDL are applicable instead of those of the GPL.
|
||||
+ *
|
||||
+ * You may elect to license modified versions of this file under the
|
||||
+ * terms and conditions of either the GPL or the CDDL or both.
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+/*******************************************************************************
|
||||
+* Header Files *
|
||||
+*******************************************************************************/
|
||||
+#include <iprt/system.h>
|
||||
+#include "internal/iprt.h"
|
||||
+
|
||||
+#include <iprt/err.h>
|
||||
+#include <iprt/assert.h>
|
||||
+#include <iprt/string.h>
|
||||
+
|
||||
+/* FreeBSD */
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/sysctl.h>
|
||||
+#include <sys/errno.h>
|
||||
+
|
||||
+RTDECL(int) RTSystemQueryTotalRam(uint64_t *pcb)
|
||||
+{
|
||||
+ int mib[2];
|
||||
+ size_t pcblen = sizeof(*pcb);
|
||||
+
|
||||
+ AssertPtrReturn(pcb, VERR_INVALID_POINTER);
|
||||
+
|
||||
+ mib[0] = CTL_HW;
|
||||
+ mib[1] = HW_PHYSMEM; /* HW_REALMEM is also possible, but
|
||||
+ includes non-main memory as well */
|
||||
+ *pcb = 0;
|
||||
+ if (sysctl(mib, 2, pcb, &pcblen, NULL, 0) == 0) {
|
||||
+ if (pcblen == sizeof(*pcb) || pcblen == sizeof(uint32_t))
|
||||
+ return VINF_SUCCESS;
|
||||
+ else
|
||||
+ return VERR_NO_MEMORY; /* XXX */
|
||||
+ }
|
||||
+ return RTErrConvertFromErrno(errno);
|
||||
+}
|
||||
+
|
||||
+RTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb)
|
||||
+{
|
||||
+ int mib[2];
|
||||
+ size_t pcblen = sizeof(*pcb);
|
||||
+
|
||||
+ AssertPtrReturn(pcb, VERR_INVALID_POINTER);
|
||||
+
|
||||
+ mib[0] = CTL_HW;
|
||||
+ mib[1] = HW_USERMEM;
|
||||
+ *pcb = 0;
|
||||
+ if (sysctl(mib, 2, pcb, &pcblen, NULL, 0) == 0) {
|
||||
+ if (pcblen == sizeof(*pcb) || pcblen == sizeof(uint32_t))
|
||||
+ return VINF_SUCCESS;
|
||||
+ else
|
||||
+ return VERR_NO_MEMORY; /* XXX */
|
||||
+ }
|
||||
+ return RTErrConvertFromErrno(errno);
|
||||
+}
|
53
emulators/virtualbox-ose-legacy/files/vboxwatchdog.in
Normal file
53
emulators/virtualbox-ose-legacy/files/vboxwatchdog.in
Normal file
|
@ -0,0 +1,53 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $FreeBSD$
|
||||
#
|
||||
# PROVIDE: vboxwatchdog
|
||||
# REQUIRE: LOGIN
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
# Add the following line to /etc/rc.conf[.local] to enable vboxwatchdog
|
||||
#
|
||||
# vboxwatchdog_enable (bool): Set to "NO" by default.
|
||||
# Set it to "YES" to enable vboxwatchdog.
|
||||
# vboxwatchdog_user (str): User account to run with.
|
||||
# vboxwatchdog_flags (str): Custom flags for VBoxWatchdog.
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name=vboxwatchdog
|
||||
rcvar=vboxwatchdog_enable
|
||||
|
||||
command="%%PREFIX%%/bin/VBoxBalloonCtrl"
|
||||
pidfile="/var/run/${name}.pid"
|
||||
|
||||
start_cmd="${name}_start"
|
||||
|
||||
vboxwatchdog_start()
|
||||
{
|
||||
local pid
|
||||
|
||||
HOME=$(/usr/sbin/pw usershow -7 -n "${vboxwatchdog_user}" | /usr/bin/cut -d: -f6)
|
||||
pid=$(check_pidfile $pidfile $command)
|
||||
|
||||
if [ -n "${pid}" ]; then
|
||||
echo "${name} already running? (pid=${pid})."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# prevent inheriting this setting to VBoxSVC
|
||||
unset VBOX_RELEASE_LOG_DEST
|
||||
|
||||
echo -n "Starting ${name}"
|
||||
/usr/bin/install -o ${vboxwatchdog_user} -g wheel -m 644 /dev/null ${pidfile}
|
||||
/usr/sbin/daemon -f -p ${pidfile} -u ${vboxwatchdog_user} ${command} ${vboxwatchdog_flags}
|
||||
echo '.'
|
||||
}
|
||||
|
||||
load_rc_config $name
|
||||
|
||||
: ${vboxwatchdog_enable="NO"}
|
||||
: ${vboxwatchdog_user="%%VBOXUSER%%"}
|
||||
: ${vboxwatchdog_flags="-b"}
|
||||
|
||||
run_rc_command "$1"
|
|
@ -4,4 +4,4 @@ feature rich, high performance product for enterprise customers, it
|
|||
is also the only professional solution that is freely available as
|
||||
Open Source Software under the terms of the GNU General Public License.
|
||||
|
||||
WWW: http://www.virtualbox.org/
|
||||
WWW: http://www.virtualbox.org/
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
bin/VBoxAutostart
|
||||
bin/VBoxBalloonCtrl
|
||||
%%X11%%bin/VBoxBFE
|
||||
bin/VBoxHeadless
|
||||
|
@ -9,12 +10,13 @@ bin/VBoxSVC
|
|||
%%QT4%%bin/VBoxTestOGL
|
||||
bin/VBoxXPCOMIPCD
|
||||
%%QT4%%bin/VirtualBox
|
||||
%%WEB%%bin/vboxwebsrv
|
||||
%%WEB%%bin/webtest
|
||||
%%WEBSERVICE%%bin/vboxwebsrv
|
||||
%%WEBSERVICE%%bin/webtest
|
||||
%%X11%%lib/virtualbox/VBoxBFE
|
||||
%%X11%%lib/virtualbox/VBoxBFE.so
|
||||
lib/virtualbox/DBGCPlugInDiggers.so
|
||||
lib/virtualbox/VBoxAuth.so
|
||||
lib/virtualbox/VBoxAutostart
|
||||
lib/virtualbox/VBoxAuthSimple.so
|
||||
lib/virtualbox/VBoxBalloonCtrl
|
||||
%%QT4%%lib/virtualbox/VBoxDbg.so
|
||||
|
@ -28,6 +30,7 @@ lib/virtualbox/VBoxGuestControlSvc.so
|
|||
lib/virtualbox/VBoxGuestPropSvc.so
|
||||
lib/virtualbox/VBoxHeadless
|
||||
lib/virtualbox/VBoxHeadless.so
|
||||
lib/virtualbox/VBoxHostChannel.so
|
||||
%%X11%%lib/virtualbox/VBoxKeyboard.so
|
||||
lib/virtualbox/VBoxManage
|
||||
lib/virtualbox/VBoxNetAdpCtl
|
||||
|
@ -49,6 +52,7 @@ lib/virtualbox/VBoxSharedClipboard.so
|
|||
%%X11%%lib/virtualbox/VBoxSharedCrOpenGL.so
|
||||
lib/virtualbox/VBoxSharedFolders.so
|
||||
lib/virtualbox/VBoxVMM.so
|
||||
lib/virtualbox/VBoxVMMPreload.so
|
||||
lib/virtualbox/VBoxXPCOM.so
|
||||
lib/virtualbox/VBoxXPCOMC.so
|
||||
lib/virtualbox/VBoxXPCOMIPCD
|
||||
|
@ -63,24 +67,29 @@ lib/virtualbox/VBoxDDR0.r0
|
|||
%%GUESTADDITIONS%%lib/virtualbox/additions/VBoxGuestAdditions_%%GUEST_VER%%.iso
|
||||
lib/virtualbox/VBoxPython%%PYTHON_VERU%%.so
|
||||
lib/virtualbox/VMMR0.r0
|
||||
%%WEB%%lib/virtualbox/vboxwebsrv
|
||||
%%WEB%%lib/virtualbox/webtest
|
||||
%%WEBSERVICE%%lib/virtualbox/vboxwebsrv
|
||||
%%WEBSERVICE%%lib/virtualbox/webtest
|
||||
lib/virtualbox/components/VirtualBox_XPCOM.xpt
|
||||
lib/virtualbox/components/VBoxXPCOMIPCC.so
|
||||
lib/virtualbox/components/VBoxSVCM.so
|
||||
lib/virtualbox/components/VBoxC.so
|
||||
lib/virtualbox/components/VBoxXPCOMBase.xpt
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_ar.qm
|
||||
%%VNC%%lib/virtualbox/ExtensionPacks/VNC/%%ARCH%%/VBoxVNC.so
|
||||
%%VNC%%lib/virtualbox/ExtensionPacks/VNC/%%ARCH%%/VBoxVNCMain.so
|
||||
%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack-license.html
|
||||
%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack-license.rtf
|
||||
%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack-license.txt
|
||||
%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack.xml
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_bg.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_ca.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_ca_VA.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_cs.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_da.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_de.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_el.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_en.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_es.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_eu.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_fa_IR.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_fi.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_fr.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_gl_ES.qm
|
||||
|
@ -104,17 +113,16 @@ lib/virtualbox/components/VBoxXPCOMBase.xpt
|
|||
%%NLS%%%%DATADIR%%/nls/VirtualBox_uk.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_zh_CN.qm
|
||||
%%NLS%%%%DATADIR%%/nls/VirtualBox_zh_TW.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_ar.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_bg.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_ca.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_ca_VA.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_cs.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_da.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_de.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_el.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_en.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_es.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_eu.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_fa_IR.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_fi.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_fr.qm
|
||||
%%NLS%%%%DATADIR%%/nls/qt_gl_ES.qm
|
||||
|
@ -234,14 +242,15 @@ lib/virtualbox/components/VBoxXPCOMBase.xpt
|
|||
%%DATADIR%%/idl/VirtualBox_XPCOM.idl
|
||||
%%DATADIR%%/samples/tstVBoxAPILinux.cpp
|
||||
%%DATADIR%%/samples/Makefile
|
||||
%%WEB%%%%DATADIR%%/sdk/bindings/webservice/vboxweb.wsdl
|
||||
%%WEB%%%%DATADIR%%/sdk/bindings/webservice/vboxwebService.wsdl
|
||||
%%WEBSERVICE%%%%DATADIR%%/sdk/bindings/webservice/vboxweb.wsdl
|
||||
%%WEBSERVICE%%%%DATADIR%%/sdk/bindings/webservice/vboxwebService.wsdl
|
||||
include/virtualbox/VBoxCAPI_v2_2.h
|
||||
include/virtualbox/VBoxCAPI_v3_0.h
|
||||
include/virtualbox/VBoxCAPI_v3_1.h
|
||||
include/virtualbox/VBoxCAPI_v3_2.h
|
||||
include/virtualbox/VBoxCAPI_v4_0.h
|
||||
include/virtualbox/VBoxCAPI_v4_1.h
|
||||
include/virtualbox/VBoxCAPI_v4_2.h
|
||||
include/virtualbox/VirtualBox_XPCOM.h
|
||||
include/virtualbox/ipcIClientObserver.h
|
||||
include/virtualbox/ipcIDConnectService.h
|
||||
|
@ -610,13 +619,17 @@ include/virtualbox/xpcom/xpcom-config.h
|
|||
@dirrm include/virtualbox/nsprpub
|
||||
@dirrm include/virtualbox/ipcd
|
||||
@dirrm include/virtualbox
|
||||
%%VNC%%@dirrm lib/virtualbox/ExtensionPacks/VNC/%%ARCH%%
|
||||
%%VNC%%@dirrm lib/virtualbox/ExtensionPacks/VNC
|
||||
%%VNC%%@dirrmtry lib/virtualbox/ExtensionPacks
|
||||
%%NLS%%@dirrm %%DATADIR%%/nls
|
||||
%%WEB%%@dirrm %%DATADIR%%/sdk/bindings/webservice
|
||||
%%WEB%%@dirrm %%DATADIR%%/sdk/bindings
|
||||
%%WEB%%@dirrm %%DATADIR%%/sdk
|
||||
%%WEBSERVICE%%@dirrm %%DATADIR%%/sdk/bindings/webservice
|
||||
%%WEBSERVICE%%@dirrm %%DATADIR%%/sdk/bindings
|
||||
%%WEBSERVICE%%@dirrm %%DATADIR%%/sdk
|
||||
@dirrm %%DATADIR%%/samples
|
||||
@dirrm %%DATADIR%%/idl
|
||||
@dirrm %%DATADIR%%
|
||||
@dirrmtry %%DATADIR%%
|
||||
%%QT4%%@dirrmtry share/applications
|
||||
@dirrm lib/virtualbox/components
|
||||
%%GUESTADDITIONS%%@dirrm lib/virtualbox/additions
|
||||
@dirrm lib/virtualbox
|
||||
@dirrmtry lib/virtualbox
|
||||
|
|
Loading…
Add table
Reference in a new issue