634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync/* $Id$ */
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync/** @file
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * IPRT - RTSystemQueryTotalRam, OS/2 ring-3.
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync */
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync/*
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * Copyright (C) 2010-2013 Oracle Corporation
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync *
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * available from http://www.virtualbox.org. This file is free software;
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * you can redistribute it and/or modify it under the terms of the GNU
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * General Public License (GPL) as published by the Free Software
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync *
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * The contents of this file may alternatively be used under the terms
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * of the Common Development and Distribution License Version 1.0
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * VirtualBox OSE distribution, in which case the provisions of the
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * CDDL are applicable instead of those of the GPL.
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync *
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * You may elect to license modified versions of this file under the
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync * terms and conditions of either the GPL or the CDDL or both.
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync */
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync/*******************************************************************************
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync* Header Files *
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync*******************************************************************************/
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#define INCL_DOSMISC
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#define INCL_ERRORS
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#include <os2.h>
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#undef RT_MAX
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#include <iprt/system.h>
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#include "internal/iprt.h"
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#include <iprt/err.h>
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#include <iprt/assert.h>
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync#include <iprt/string.h>
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsyncRTDECL(int) RTSystemQueryTotalRam(uint64_t *pcb)
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync{
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync AssertPtrReturn(pcb, VERR_INVALID_POINTER);
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync ULONG cbMem;
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync APIRET rc = DosQuerySysInfo(QSV_TOTPHYSMEM, QSV_TOTPHYSMEM, &cbMem, sizeof(cbMem));
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync if (rc != NO_ERROR)
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync return RTErrConvertFromOS2(rc);
64eea8161bef2aa3c6516481383c830bca27abfevboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync *pcb = cbMem;
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync return VINF_SUCCESS;
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync}
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsyncRTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb)
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync{
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync AssertPtrReturn(pcb, VERR_INVALID_POINTER);
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync ULONG cbAvailMem;
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync APIRET rc = DosQuerySysInfo(QSV_TOTAVAILMEM, QSV_TOTAVAILMEM, &cbAvailMem, sizeof(cbAvailMem));
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync if (rc != NO_ERROR)
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync return RTErrConvertFromOS2(rc);
64eea8161bef2aa3c6516481383c830bca27abfevboxsync
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync *pcb = cbAvailMem;
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync return VINF_SUCCESS;
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync}
634a322713c795d9663e89dba496ecc6a78bfcc9vboxsync