tstInt.cpp revision 37eb780874007e6c73f493edcfd7a1e498a6a2ef
/** @file
*
* VBox host drivers - Ring-0 support drivers - Testcases:
* Test the interrupt gate feature of the support library
*/
/*
* Copyright (C) 2006 InnoTek Systemberatung GmbH
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License 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.
*
* If you received this file as part of a commercial VirtualBox
* distribution, then only the terms of your commercial VirtualBox
* license agreement apply instead of the previous paragraph.
*/
/*******************************************************************************
* Header Files *
*******************************************************************************/
/**
* Makes a path to a file in the executable directory.
*/
{
char *psz;
char *psz2;
if (!psz)
if (!psz)
{
}
return pszFile;
}
{
int rcRet = 0;
int i;
int rc;
if (cIterations == 0)
cIterations = 64;
/*
* Init.
*/
RTR3Init();
if (!rc)
{
/*
* Load VMM code.
*/
char szFile[RTPATH_MAX];
if (!rc)
{
/*
* Create a fake 'VM'.
*/
if (paPages)
else
rc = VERR_NO_MEMORY;
if (VBOX_SUCCESS(rc))
{
#ifdef VBOX_USE_LOW_MEM_FOR_VM
#else
#endif
#ifdef VBOX_WITHOUT_IDT_PATCHING
#endif
if (!rc)
{
/*
* Call VMM code with invalid function.
*/
for (i = cIterations; i > 0; i--)
{
if (rc != VINF_SUCCESS)
{
rcRet++;
break;
}
}
/*
* Profile it.
*/
if (!rc)
{
RTTimeNanoTS();
for (i = 0; i < 1000000; i++)
{
{
rcRet++;
break;
}
}
RTPrintf("tstInt: %d iterations in %llu ns / %llu ticks. %llu ns / %#llu ticks per iteration. Min %llu ticks.\n",
}
}
else
{
rcRet++;
}
}
else
{
rcRet++;
}
/*
* Unload VMM.
*/
rc = SUPUnloadVMM();
if (rc)
{
rcRet++;
}
}
else
{
rcRet++;
}
/*
* Terminate.
*/
}
return !!rc;
}