aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordecke <decke@FreeBSD.org>2013-07-03 20:56:48 +0800
committerdecke <decke@FreeBSD.org>2013-07-03 20:56:48 +0800
commit163a3a861bf56581bbe8cf906a0826408b4fd7d9 (patch)
treeb7259808c0897ec4c018f406c7c2725e89da43fe
parent05ef618682de46f8007c96a074c3b17d3589b41f (diff)
downloadfreebsd-ports-gnome-163a3a861bf56581bbe8cf906a0826408b4fd7d9.tar.gz
freebsd-ports-gnome-163a3a861bf56581bbe8cf906a0826408b4fd7d9.tar.zst
freebsd-ports-gnome-163a3a861bf56581bbe8cf906a0826408b4fd7d9.zip
- Changing RAM for a VM was broken in the GUI because there was no
implementation for FreeBSD that could calculate available RAM. PR: ports/180086 Submitted by: Martin Birgmeier <Martin.Birgmeier@aon.at>
-rw-r--r--emulators/virtualbox-ose/Makefile1
-rw-r--r--emulators/virtualbox-ose/files/patch-src-VBox-Runtime-Makefile.kmk11
-rw-r--r--emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r3-freebsd-RTSystemQueryTotalRam-freebsd.cpp83
3 files changed, 95 insertions, 0 deletions
diff --git a/emulators/virtualbox-ose/Makefile b/emulators/virtualbox-ose/Makefile
index c9280767b5fa..aaeadd27621d 100644
--- a/emulators/virtualbox-ose/Makefile
+++ b/emulators/virtualbox-ose/Makefile
@@ -3,6 +3,7 @@
PORTNAME= virtualbox-ose
DISTVERSION= 4.2.14
+PORTREVISION= 1
CATEGORIES= emulators
MASTER_SITES= http://download.virtualbox.org/virtualbox/${DISTVERSION}/ \
http://tmp.chruetertee.ch/ \
diff --git a/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-Makefile.kmk b/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-Makefile.kmk
new file mode 100644
index 000000000000..32325a580314
--- /dev/null
+++ b/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-Makefile.kmk
@@ -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 \
diff --git a/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r3-freebsd-RTSystemQueryTotalRam-freebsd.cpp b/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r3-freebsd-RTSystemQueryTotalRam-freebsd.cpp
new file mode 100644
index 000000000000..e4aedee6a209
--- /dev/null
+++ b/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r3-freebsd-RTSystemQueryTotalRam-freebsd.cpp
@@ -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))
++ 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))
++ return VINF_SUCCESS;
++ else
++ return VERR_NO_MEMORY; /* XXX */
++ }
++ return RTErrConvertFromErrno(errno);
++}