mirror of https://gitee.com/openkylin/libvirt.git
Use virFileFindResource to locate driver plugins
Replace virDriverModuleInitialize with virFileFindResource usage. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
d3c7684220
commit
bc2f42a094
|
@ -1167,25 +1167,14 @@ int main(int argc, char **argv) {
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
*tmp = '\0';
|
*tmp = '\0';
|
||||||
char *driverdir;
|
if (virAsprintfQuiet(&cpumap, "%s/../../src/cpu/cpu_map.xml",
|
||||||
if (virAsprintfQuiet(&driverdir, "%s/../../src/.libs", argv[0]) < 0 ||
|
|
||||||
virAsprintfQuiet(&cpumap, "%s/../../src/cpu/cpu_map.xml",
|
|
||||||
argv[0]) < 0) {
|
argv[0]) < 0) {
|
||||||
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
|
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
if (access(driverdir, R_OK) < 0) {
|
|
||||||
fprintf(stderr, _("%s: expected driver directory '%s' is missing\n"),
|
|
||||||
argv[0], driverdir);
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
#ifdef WITH_DRIVER_MODULES
|
|
||||||
virDriverModuleInitialize(driverdir);
|
|
||||||
#endif
|
|
||||||
cpuMapOverride(cpumap);
|
cpuMapOverride(cpumap);
|
||||||
VIR_FREE(cpumap);
|
VIR_FREE(cpumap);
|
||||||
*tmp = '/';
|
*tmp = '/';
|
||||||
/* Must not free 'driverdir' - it is still used */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
26
src/driver.c
26
src/driver.c
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "viralloc.h"
|
#include "viralloc.h"
|
||||||
|
#include "virfile.h"
|
||||||
#include "virlog.h"
|
#include "virlog.h"
|
||||||
#include "virutil.h"
|
#include "virutil.h"
|
||||||
#include "configmake.h"
|
#include "configmake.h"
|
||||||
|
@ -41,21 +42,6 @@ VIR_LOG_INIT("driver");
|
||||||
|
|
||||||
# include <dlfcn.h>
|
# include <dlfcn.h>
|
||||||
|
|
||||||
static const char *moddir = NULL;
|
|
||||||
|
|
||||||
void
|
|
||||||
virDriverModuleInitialize(const char *defmoddir)
|
|
||||||
{
|
|
||||||
const char *custommoddir = virGetEnvBlockSUID("LIBVIRT_DRIVER_DIR");
|
|
||||||
if (custommoddir)
|
|
||||||
moddir = custommoddir;
|
|
||||||
else if (defmoddir)
|
|
||||||
moddir = defmoddir;
|
|
||||||
else
|
|
||||||
moddir = DEFAULT_DRIVER_DIR;
|
|
||||||
VIR_DEBUG("Module dir %s", moddir);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *
|
void *
|
||||||
virDriverLoadModule(const char *name)
|
virDriverLoadModule(const char *name)
|
||||||
{
|
{
|
||||||
|
@ -63,12 +49,14 @@ virDriverLoadModule(const char *name)
|
||||||
void *handle = NULL;
|
void *handle = NULL;
|
||||||
int (*regsym)(void);
|
int (*regsym)(void);
|
||||||
|
|
||||||
if (moddir == NULL)
|
|
||||||
virDriverModuleInitialize(NULL);
|
|
||||||
|
|
||||||
VIR_DEBUG("Module load %s", name);
|
VIR_DEBUG("Module load %s", name);
|
||||||
|
|
||||||
if (virAsprintfQuiet(&modfile, "%s/libvirt_driver_%s.so", moddir, name) < 0)
|
if (!(modfile = virFileFindResourceFull(name,
|
||||||
|
"libvirt_driver_",
|
||||||
|
".so",
|
||||||
|
"src/.libs",
|
||||||
|
LIBDIR "/libvirt/connection-driver",
|
||||||
|
"LIBVIRT_DRIVER_DIR")))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (access(modfile, R_OK) < 0) {
|
if (access(modfile, R_OK) < 0) {
|
||||||
|
|
|
@ -2164,7 +2164,6 @@ int virRegisterNWFilterDriver(virNWFilterDriverPtr) ATTRIBUTE_RETURN_CHECK;
|
||||||
# ifdef WITH_LIBVIRTD
|
# ifdef WITH_LIBVIRTD
|
||||||
int virRegisterStateDriver(virStateDriverPtr) ATTRIBUTE_RETURN_CHECK;
|
int virRegisterStateDriver(virStateDriverPtr) ATTRIBUTE_RETURN_CHECK;
|
||||||
# endif
|
# endif
|
||||||
void virDriverModuleInitialize(const char *defmoddir);
|
|
||||||
void *virDriverLoadModule(const char *name);
|
void *virDriverLoadModule(const char *name);
|
||||||
|
|
||||||
#endif /* __VIR_DRIVER_H__ */
|
#endif /* __VIR_DRIVER_H__ */
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
# driver.h
|
# driver.h
|
||||||
virDriverLoadModule;
|
virDriverLoadModule;
|
||||||
virDriverModuleInitialize;
|
|
||||||
|
|
||||||
# Let emacs know we want case-insensitive sorting
|
# Let emacs know we want case-insensitive sorting
|
||||||
# Local Variables:
|
# Local Variables:
|
||||||
|
|
|
@ -65,8 +65,6 @@ mymain(void)
|
||||||
ret = -1; \
|
ret = -1; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
virDriverModuleInitialize(abs_builddir "/../src/.libs");
|
|
||||||
|
|
||||||
#ifdef WITH_NETWORK
|
#ifdef WITH_NETWORK
|
||||||
# define USE_NETWORK "network"
|
# define USE_NETWORK "network"
|
||||||
TEST("network", NULL);
|
TEST("network", NULL);
|
||||||
|
|
Loading…
Reference in New Issue