2018-12-13 13:32:06 +00:00
/*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2.1 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library . If not , see
* < http : //www.gnu.org/licenses/>.
*/
2008-05-16 16:51:30 +00:00
2019-06-18 11:13:14 -05:00
# pragma once
2018-12-13 13:32:06 +00:00
2019-06-18 11:13:14 -05:00
# ifdef WITH_QEMU
2018-12-13 13:32:06 +00:00
2019-06-18 11:13:14 -05:00
# include "capabilities.h"
# include "virfilecache.h"
# include "domain_conf.h"
# include "qemu / qemu_capabilities.h"
# include "qemu / qemu_conf.h"
2008-05-16 16:51:30 +00:00
2019-06-18 11:13:14 -05:00
# define TEST_QEMU_CAPS_PATH abs_srcdir " / qemucapabilitiesdata"
2019-04-16 12:22:31 +02:00
2016-05-10 11:35:43 +02:00
enum {
GIC_NONE = 0 ,
GIC_V2 ,
GIC_V3 ,
GIC_BOTH ,
} ;
2019-03-31 11:49:34 -04:00
typedef enum {
ARG_QEMU_CAPS ,
ARG_GIC ,
ARG_MIGRATE_FROM ,
ARG_MIGRATE_FD ,
ARG_FLAGS ,
ARG_PARSEFLAGS ,
ARG_CAPS_ARCH ,
ARG_CAPS_VER ,
ARG_END ,
} testQemuInfoArgName ;
typedef enum {
FLAG_EXPECT_FAILURE = 1 < < 0 ,
FLAG_EXPECT_PARSE_ERROR = 1 < < 1 ,
2020-10-21 10:08:11 +02:00
FLAG_FIPS_HOST = 1 < < 2 , /* simulate host with FIPS mode enabled */
2019-03-31 11:49:34 -04:00
FLAG_REAL_CAPS = 1 < < 3 ,
FLAG_SKIP_LEGACY_CPUS = 1 < < 4 ,
2019-08-08 18:55:14 +04:00
FLAG_SLIRP_HELPER = 1 < < 5 ,
2019-03-31 11:49:34 -04:00
} testQemuInfoFlags ;
struct testQemuInfo {
const char * name ;
char * infile ;
char * outfile ;
2020-09-22 11:57:39 +00:00
char * errfile ;
2019-03-31 11:49:34 -04:00
virQEMUCapsPtr qemuCaps ;
const char * migrateFrom ;
int migrateFd ;
unsigned int flags ;
unsigned int parseFlags ;
2019-10-24 17:51:42 +02:00
virArch arch ;
2020-05-15 14:33:10 +02:00
char * schemafile ;
2021-02-19 16:19:09 +01:00
GHashTable * qapiSchemaCache ;
2019-03-31 11:49:34 -04:00
} ;
2008-05-16 16:51:30 +00:00
virCapsPtr testQemuCapsInit ( void ) ;
2013-03-31 20:03:42 +02:00
virDomainXMLOptionPtr testQemuXMLConfInit ( void ) ;
2014-06-27 16:39:27 +02:00
2018-04-04 09:17:52 +02:00
virQEMUCapsPtr qemuTestParseCapabilitiesArch ( virArch arch ,
const char * capsFile ) ;
2015-03-23 17:19:28 +01:00
extern virCPUDefPtr cpuDefault ;
extern virCPUDefPtr cpuHaswell ;
2016-09-13 22:27:09 +02:00
extern virCPUDefPtr cpuPower8 ;
2017-05-17 16:39:16 +02:00
extern virCPUDefPtr cpuPower9 ;
2016-08-04 13:16:55 +02:00
2019-11-26 17:51:22 +00:00
void qemuTestSetHostArch ( virQEMUDriverPtr driver ,
virArch arch ) ;
2019-11-29 10:40:39 +00:00
void qemuTestSetHostCPU ( virQEMUDriverPtr driver ,
virArch arch ,
2016-08-04 13:16:55 +02:00
virCPUDefPtr cpu ) ;
2015-03-23 17:19:28 +01:00
2015-09-15 08:16:02 +02:00
int qemuTestDriverInit ( virQEMUDriver * driver ) ;
void qemuTestDriverFree ( virQEMUDriver * driver ) ;
2017-07-19 17:01:56 +02:00
int qemuTestCapsCacheInsert ( virFileCachePtr cache ,
2015-09-09 17:03:14 +03:00
virQEMUCapsPtr caps ) ;
2016-05-10 11:35:43 +02:00
int testQemuCapsSetGIC ( virQEMUCapsPtr qemuCaps ,
int gic ) ;
2018-04-18 10:47:31 +02:00
2019-04-16 12:26:22 +02:00
char * testQemuGetLatestCapsForArch ( const char * arch ,
2018-04-18 10:47:31 +02:00
const char * suffix ) ;
2020-10-22 19:04:18 +02:00
GHashTable * testQemuGetLatestCaps ( void ) ;
2018-04-18 10:47:31 +02:00
2019-10-22 15:34:10 +02:00
typedef int ( * testQemuCapsIterateCallback ) ( const char * inputDir ,
2019-10-22 16:08:10 +02:00
const char * prefix ,
const char * version ,
2019-03-07 15:54:55 +01:00
const char * archName ,
2019-10-22 15:44:37 +02:00
const char * suffix ,
2019-03-07 15:54:55 +01:00
void * opaque ) ;
2019-04-16 12:33:14 +02:00
int testQemuCapsIterate ( const char * suffix ,
2019-03-07 15:54:55 +01:00
testQemuCapsIterateCallback callback ,
void * opaque ) ;
2019-03-31 11:49:34 -04:00
int testQemuInfoSetArgs ( struct testQemuInfo * info ,
2020-10-22 19:04:18 +02:00
GHashTable * capslatest , . . . ) ;
2019-03-31 11:49:34 -04:00
void testQemuInfoClear ( struct testQemuInfo * info ) ;
2019-06-18 11:13:14 -05:00
# endif