summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric DeVolder <eric.devolder@oracle.com>2018-01-24 13:20:21 -0600
committerSimon Horman <horms@verge.net.au>2018-01-25 09:05:55 +0100
commit282ff2a5e613b8291b44848fad42904541a031c1 (patch)
tree9745626abd7e540b6d9859f73704539953b7fb7b
parent58c225a6d762c332c05343f8fd5f5acea4ea538b (diff)
kexec-tools: Make xc_dlhandle static
This patch is a follow-on to commit 894bea93 "kexec-tools: Perform run-time linking of libxenctrl.so". This patch addresses feedback from Daniel Kiper. This patch implements Daniel's suggestion to make the xc_dlhandle variable static, insert missing 'extern' qualifier for the new __xc() wrappers, and correct some style issues. Signed-off-by: Eric DeVolder <eric.devolder@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r--kexec/kexec-xen.c11
-rw-r--r--kexec/kexec-xen.h18
2 files changed, 18 insertions, 11 deletions
diff --git a/kexec/kexec-xen.c b/kexec/kexec-xen.c
index 75f8758..1887390 100644
--- a/kexec/kexec-xen.c
+++ b/kexec/kexec-xen.c
@@ -15,8 +15,17 @@
#include "crashdump.h"
#ifdef CONFIG_LIBXENCTRL_DL
-void *xc_dlhandle;
+#include <dlfcn.h>
+
+/* The handle from dlopen(), needed by dlsym(), dlclose() */
+static void *xc_dlhandle;
xc_hypercall_buffer_t XC__HYPERCALL_BUFFER_NAME(HYPERCALL_BUFFER_NULL);
+
+void *__xc_dlsym(const char *symbol)
+{
+ return dlsym(xc_dlhandle, symbol);
+}
+
xc_interface *__xc_interface_open(xentoollog_logger *logger,
xentoollog_logger *dombuild_logger,
unsigned open_flags)
diff --git a/kexec/kexec-xen.h b/kexec/kexec-xen.h
index ffb8743..ae67393 100644
--- a/kexec/kexec-xen.h
+++ b/kexec/kexec-xen.h
@@ -5,29 +5,27 @@
#include <xenctrl.h>
#ifdef CONFIG_LIBXENCTRL_DL
-#include <dlfcn.h>
-
-/* The handle from dlopen(), needed by dlsym(), dlclose() */
-extern void *xc_dlhandle;
+/* Lookup symbols in libxenctrl.so */
+extern void *__xc_dlsym(const char *symbol);
/* Wrappers around xc_interface_open/close() to insert dlopen/dlclose() */
-xc_interface *__xc_interface_open(xentoollog_logger *logger,
- xentoollog_logger *dombuild_logger,
- unsigned open_flags);
-int __xc_interface_close(xc_interface *xch);
+extern xc_interface *__xc_interface_open(xentoollog_logger *logger,
+ xentoollog_logger *dombuild_logger,
+ unsigned open_flags);
+extern int __xc_interface_close(xc_interface *xch);
/* GCC expression statements for evaluating dlsym() */
#define __xc_call(dtype, name, args...) \
( \
{ dtype value; \
typedef dtype (*func_t)(xc_interface *, ...); \
- func_t func = dlsym(xc_dlhandle, #name); \
+ func_t func = __xc_dlsym(#name); \
value = func(args); \
value; } \
)
#define __xc_data(dtype, name) \
( \
- { dtype *value = (dtype *)dlsym(xc_dlhandle, #name); value; } \
+ { dtype *value = (dtype *)__xc_dlsym(#name); value; } \
)
/* The wrappers around utilized xenctrl.h functions */