virFileActivateDirOverride(argv[0]);
- if (strstr(argv[0], "lt-libvirtd") ||
- strstr(argv[0], "/daemon/.libs/libvirtd")) {
- char *tmp = strrchr(argv[0], '/');
- char *cpumap;
- if (!tmp) {
- fprintf(stderr, _("%s: cannot identify driver directory\n"), argv[0]);
- exit(EXIT_FAILURE);
- }
- *tmp = '\0';
- if (virAsprintfQuiet(&cpumap, "%s/../../src/cpu/cpu_map.xml",
- argv[0]) < 0) {
- fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
- exit(EXIT_FAILURE);
- }
- cpuMapOverride(cpumap);
- VIR_FREE(cpumap);
- *tmp = '/';
- }
-
while (1) {
int optidx = 0;
int c;
#include <config.h>
#include "viralloc.h"
+#include "virfile.h"
#include "cpu.h"
#include "cpu_map.h"
#include "configmake.h"
VIR_LOG_INIT("cpu.cpu_map");
-#define CPUMAPFILE PKGDATADIR "/cpu_map.xml"
-
-static char *cpumap;
-
VIR_ENUM_IMPL(cpuMapElement, CPU_MAP_ELEMENT_LAST,
"vendor",
"feature",
char *xpath = NULL;
int ret = -1;
int element;
- const char *mapfile = (cpumap ? cpumap : CPUMAPFILE);
+ char *mapfile;
+
+ if (!(mapfile = virFileFindResource("cpu_map.xml",
+ "src/cpu",
+ PKGDATADIR)))
+ return -1;
VIR_DEBUG("Loading CPU map from %s", mapfile);
if (arch == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("undefined hardware architecture"));
- return -1;
+ goto cleanup;
}
if (cb == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("no callback provided"));
- return -1;
+ goto cleanup;
}
if ((xml = xmlParseFile(mapfile)) == NULL) {
xmlXPathFreeContext(ctxt);
xmlFreeDoc(xml);
VIR_FREE(xpath);
+ VIR_FREE(mapfile);
return ret;
virReportOOMError();
goto cleanup;
}
-
-
-int
-cpuMapOverride(const char *path)
-{
- char *map;
-
- if (VIR_STRDUP(map, path) < 0)
- return -1;
-
- VIR_FREE(cpumap);
- cpumap = map;
- return 0;
-}
cpuMapLoadCallback cb,
void *data);
-extern int
-cpuMapOverride(const char *path);
-
#endif /* __VIR_CPU_MAP_H__ */
cpuGetModels;
cpuGuestData;
cpuHasFeature;
-cpuMapOverride;
cpuNodeData;
cpuUpdate;
#include "cpu/cpu_map.h"
#include "virstring.h"
-static const char *abs_top_srcdir;
-
#define VIR_FROM_THIS VIR_FROM_CPU
enum cpuTestBoolWithError {
mymain(void)
{
int ret = 0;
- char *map = NULL;
-
- abs_top_srcdir = getenv("abs_top_srcdir");
- if (!abs_top_srcdir)
- abs_top_srcdir = abs_srcdir "/..";
-
- if (virAsprintf(&map, "%s/src/cpu/cpu_map.xml", abs_top_srcdir) < 0 ||
- cpuMapOverride(map) < 0) {
- VIR_FREE(map);
- return EXIT_FAILURE;
- }
#define DO_TEST(arch, api, name, host, cpu, \
models, nmodels, preferred, flags, result) \
DO_TEST_GUESTDATA("ppc64", "host", "guest", ppc_models, NULL, 0);
DO_TEST_GUESTDATA("ppc64", "host", "guest-nofallback", ppc_models, "POWER7_v2.1", -1);
- VIR_FREE(map);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
mymain(void)
{
int ret = 0;
- char *map = NULL;
bool skipLegacyCPUs = false;
abs_top_srcdir = getenv("abs_top_srcdir");
driver.config->spiceTLS = 1;
if (VIR_STRDUP_QUIET(driver.config->spicePassword, "123456") < 0)
return EXIT_FAILURE;
- if (virAsprintf(&map, "%s/src/cpu/cpu_map.xml", abs_top_srcdir) < 0 ||
- cpuMapOverride(map) < 0) {
- VIR_FREE(map);
- return EXIT_FAILURE;
- }
# define DO_TEST_FULL(name, migrateFrom, migrateFd, flags, ...) \
do { \
virObjectUnref(driver.config);
virObjectUnref(driver.caps);
virObjectUnref(driver.xmlopt);
- VIR_FREE(map);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
mymain(void)
{
int ret = 0;
- char *map = NULL;
bool json = false;
abs_top_srcdir = getenv("abs_top_srcdir");
return EXIT_FAILURE;
if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
return EXIT_FAILURE;
- if (virAsprintf(&map, "%s/src/cpu/cpu_map.xml", abs_top_srcdir) < 0 ||
- cpuMapOverride(map) < 0) {
- VIR_FREE(map);
- return EXIT_FAILURE;
- }
# define DO_TEST_FULL(name, migrateFrom, migrateFd, expectError, ...) \
do { \
virObjectUnref(driver.config);
virObjectUnref(driver.caps);
virObjectUnref(driver.xmlopt);
- VIR_FREE(map);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}