summaryrefslogtreecommitdiff
path: root/module-common.c
diff options
context:
space:
mode:
authorFam Zheng <famz@redhat.com>2014-02-10 14:48:57 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2014-02-20 13:14:18 +0100
commite26110cfc67d48331a76e9b1e6f7fed7569e1ab3 (patch)
tree9ac70ad405cdf18189017345ee184f268510db3b /module-common.c
parent17969268f5938ae1d7f3dedbd73e507badb6146d (diff)
downloadqemu-e26110cfc67d48331a76e9b1e6f7fed7569e1ab3.tar.gz
qemu-e26110cfc67d48331a76e9b1e6f7fed7569e1ab3.tar.bz2
qemu-e26110cfc67d48331a76e9b1e6f7fed7569e1ab3.zip
module: implement module loading
This patch adds loading, stamp checking and initialization of modules. The init function of dynamic module is no longer directly called as __attribute__((constructor)) in static linked version, it is called only after passed the checking of presense of stamp symbol: qemu_stamp_$RELEASEHASH where $RELEASEHASH is generated by hashing version strings and content of configure script. With this, modules built from a different tree/version/configure will not be loaded. The module loading code requires gmodule-2.0. Modules are searched under - CONFIG_MODDIR - executable folder (to allow running qemu-{img,io} in the build directory) - ../ of executable folder (to allow running system emulator in the build directory) Modules are linked under their subdir respectively, then copied to top level of build directory for above convinience, e.g.: $(BUILD_DIR)/block/curl.so -> $(BUILD_DIR)/block-curl.so Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'module-common.c')
-rw-r--r--module-common.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/module-common.c b/module-common.c
new file mode 100644
index 0000000000..50c67500b1
--- /dev/null
+++ b/module-common.c
@@ -0,0 +1,10 @@
+#include "config-host.h"
+#include "qemu/module.h"
+
+void qemu_module_dummy(void)
+{
+}
+
+void DSO_STAMP_FUN(void)
+{
+}