diff options
author | decke <decke@FreeBSD.org> | 2013-07-03 20:56:48 +0800 |
---|---|---|
committer | decke <decke@FreeBSD.org> | 2013-07-03 20:56:48 +0800 |
commit | 163a3a861bf56581bbe8cf906a0826408b4fd7d9 (patch) | |
tree | b7259808c0897ec4c018f406c7c2725e89da43fe | |
parent | 05ef618682de46f8007c96a074c3b17d3589b41f (diff) | |
download | freebsd-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>
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); ++} |