tstVMM.cpp revision 4ae0468b4ae87a83e1a5f8c4f98ff78e840fde85
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/* $Id$ */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/** @file
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * VMM Testcase.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Copyright (C) 2006-2007 Sun Microsystems, Inc.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * This file is part of VirtualBox Open Source Edition (OSE), as
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * available from http://www.virtualbox.org. This file is free software;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * you can redistribute it and/or modify it under the terms of the GNU
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * General Public License (GPL) as published by the Free Software
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Foundation, in version 2 as it comes in the "COPYING" file of the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Clara, CA 95054 USA or visit http://www.sun.com if you need
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * additional information or have any questions.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*******************************************************************************
12b65585e720714b31036daaa2b30eb76014048eGordon Ross* Header Files *
12b65585e720714b31036daaa2b30eb76014048eGordon Ross*******************************************************************************/
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <VBox/vm.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <VBox/vmm.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <VBox/cpum.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <VBox/err.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <VBox/log.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <iprt/assert.h>
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#include <iprt/runtime.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <iprt/semaphore.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <iprt/stream.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*******************************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw* Defined Constants And Macros *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw*******************************************************************************/
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States#define TESTCASE "tstVMM"
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwVMMR3DECL(int) VMMDoTest(PVM pVM);
7f667e74610492ddbce8ce60f52ece95d2401949jose borrego
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwint main(int argc, char **argv)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw{
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int rcRet = 0; /* error count. */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw RTR3InitAndSUPLib();
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Create empty VM.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw RTPrintf(TESTCASE ": Initializing...\n");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw PVM pVM;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int rc = VMR3Create(1, NULL, NULL, NULL, NULL, &pVM);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw if (VBOX_SUCCESS(rc))
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Do testing.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw RTPrintf(TESTCASE ": Testing...\n");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw PVMREQ pReq1 = NULL;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw rc = VMR3ReqCall(pVM, VMREQDEST_ALL, &pReq1, RT_INDEFINITE_WAIT, (PFNRT)VMMDoTest, 1, pVM);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw AssertRC(rc);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw VMR3ReqFree(pReq1);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw STAMR3Dump(pVM, "*");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Cleanup.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw rc = VMR3Destroy(pVM);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw if (!VBOX_SUCCESS(rc))
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw {
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States RTPrintf(TESTCASE ": error: failed to destroy vm! rc=%d\n", rc);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw rcRet++;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw else
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw {
7f667e74610492ddbce8ce60f52ece95d2401949jose borrego RTPrintf(TESTCASE ": fatal error: failed to create vm! rc=%d\n", rc);
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States rcRet++;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
7f667e74610492ddbce8ce60f52ece95d2401949jose borrego
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw return rcRet;
7f667e74610492ddbce8ce60f52ece95d2401949jose borrego}
7f667e74610492ddbce8ce60f52ece95d2401949jose borrego