summaryrefslogtreecommitdiffstats
path: root/qemu/stubs
diff options
context:
space:
mode:
authorYang Zhang <yang.z.zhang@intel.com>2015-08-28 09:58:54 +0800
committerYang Zhang <yang.z.zhang@intel.com>2015-09-01 12:44:00 +0800
commite44e3482bdb4d0ebde2d8b41830ac2cdb07948fb (patch)
tree66b09f592c55df2878107a468a91d21506104d3f /qemu/stubs
parent9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 (diff)
Add qemu 2.4.0
Change-Id: Ic99cbad4b61f8b127b7dc74d04576c0bcbaaf4f5 Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
Diffstat (limited to 'qemu/stubs')
-rw-r--r--qemu/stubs/Makefile.objs40
-rw-r--r--qemu/stubs/arch-query-cpu-def.c9
-rw-r--r--qemu/stubs/bdrv-commit-all.c7
-rw-r--r--qemu/stubs/chr-baum-init.c7
-rw-r--r--qemu/stubs/chr-msmouse.c7
-rw-r--r--qemu/stubs/chr-testdev.c7
-rw-r--r--qemu/stubs/clock-warp.c7
-rw-r--r--qemu/stubs/cpu-get-clock.c7
-rw-r--r--qemu/stubs/cpu-get-icount.c9
-rw-r--r--qemu/stubs/cpus.c10
-rw-r--r--qemu/stubs/dump.c28
-rw-r--r--qemu/stubs/fd-register.c6
-rw-r--r--qemu/stubs/fdset-add-fd.c7
-rw-r--r--qemu/stubs/fdset-find-fd.c7
-rw-r--r--qemu/stubs/fdset-get-fd.c7
-rw-r--r--qemu/stubs/fdset-remove-fd.c6
-rw-r--r--qemu/stubs/gdbstub.c7
-rw-r--r--qemu/stubs/get-fd.c8
-rw-r--r--qemu/stubs/get-next-serial.c3
-rw-r--r--qemu/stubs/get-vm-name.c7
-rw-r--r--qemu/stubs/iothread-lock.c15
-rw-r--r--qemu/stubs/is-daemonized.c9
-rw-r--r--qemu/stubs/kvm.c7
-rw-r--r--qemu/stubs/machine-init-done.c6
-rw-r--r--qemu/stubs/migr-blocker.c10
-rw-r--r--qemu/stubs/mon-is-qmp.c9
-rw-r--r--qemu/stubs/mon-printf.c10
-rw-r--r--qemu/stubs/monitor-init.c6
-rw-r--r--qemu/stubs/notify-event.c6
-rw-r--r--qemu/stubs/qemu-chr-open-spice.c14
-rw-r--r--qemu/stubs/qmp_pc_dimm_device_list.c12
-rw-r--r--qemu/stubs/qtest.c14
-rw-r--r--qemu/stubs/reset.c13
-rw-r--r--qemu/stubs/runstate-check.c6
-rw-r--r--qemu/stubs/set-fd-handler.c10
-rw-r--r--qemu/stubs/slirp.c11
-rw-r--r--qemu/stubs/sysbus.c6
-rw-r--r--qemu/stubs/uuid.c12
-rw-r--r--qemu/stubs/vc-init.c7
-rw-r--r--qemu/stubs/vm-stop.c12
-rw-r--r--qemu/stubs/vmstate.c19
41 files changed, 410 insertions, 0 deletions
diff --git a/qemu/stubs/Makefile.objs b/qemu/stubs/Makefile.objs
new file mode 100644
index 000000000..9937a1295
--- /dev/null
+++ b/qemu/stubs/Makefile.objs
@@ -0,0 +1,40 @@
+stub-obj-y += arch-query-cpu-def.o
+stub-obj-y += bdrv-commit-all.o
+stub-obj-y += chr-baum-init.o
+stub-obj-y += chr-msmouse.o
+stub-obj-y += chr-testdev.o
+stub-obj-y += clock-warp.o
+stub-obj-y += cpu-get-clock.o
+stub-obj-y += cpu-get-icount.o
+stub-obj-y += dump.o
+stub-obj-y += fdset-add-fd.o
+stub-obj-y += fdset-find-fd.o
+stub-obj-y += fdset-get-fd.o
+stub-obj-y += fdset-remove-fd.o
+stub-obj-y += gdbstub.o
+stub-obj-y += get-fd.o
+stub-obj-y += get-next-serial.o
+stub-obj-y += get-vm-name.o
+stub-obj-y += iothread-lock.o
+stub-obj-y += is-daemonized.o
+stub-obj-y += machine-init-done.o
+stub-obj-y += migr-blocker.o
+stub-obj-y += mon-is-qmp.o
+stub-obj-y += mon-printf.o
+stub-obj-y += monitor-init.o
+stub-obj-y += notify-event.o
+stub-obj-$(CONFIG_SPICE) += qemu-chr-open-spice.o
+stub-obj-y += qtest.o
+stub-obj-y += reset.o
+stub-obj-y += runstate-check.o
+stub-obj-y += set-fd-handler.o
+stub-obj-y += slirp.o
+stub-obj-y += sysbus.o
+stub-obj-y += uuid.o
+stub-obj-y += vc-init.o
+stub-obj-y += vm-stop.o
+stub-obj-y += vmstate.o
+stub-obj-$(CONFIG_WIN32) += fd-register.o
+stub-obj-y += cpus.o
+stub-obj-y += kvm.o
+stub-obj-y += qmp_pc_dimm_device_list.o
diff --git a/qemu/stubs/arch-query-cpu-def.c b/qemu/stubs/arch-query-cpu-def.c
new file mode 100644
index 000000000..a975ab453
--- /dev/null
+++ b/qemu/stubs/arch-query-cpu-def.c
@@ -0,0 +1,9 @@
+#include "qemu-common.h"
+#include "sysemu/arch_init.h"
+#include "qapi/qmp/qerror.h"
+
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
+{
+ error_setg(errp, QERR_UNSUPPORTED);
+ return NULL;
+}
diff --git a/qemu/stubs/bdrv-commit-all.c b/qemu/stubs/bdrv-commit-all.c
new file mode 100644
index 000000000..a8e0a9541
--- /dev/null
+++ b/qemu/stubs/bdrv-commit-all.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "block/block.h"
+
+int bdrv_commit_all(void)
+{
+ return 0;
+}
diff --git a/qemu/stubs/chr-baum-init.c b/qemu/stubs/chr-baum-init.c
new file mode 100644
index 000000000..f5cc6ce1f
--- /dev/null
+++ b/qemu/stubs/chr-baum-init.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "sysemu/char.h"
+
+CharDriverState *chr_baum_init(void)
+{
+ return NULL;
+}
diff --git a/qemu/stubs/chr-msmouse.c b/qemu/stubs/chr-msmouse.c
new file mode 100644
index 000000000..812f8b0ab
--- /dev/null
+++ b/qemu/stubs/chr-msmouse.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "sysemu/char.h"
+
+CharDriverState *qemu_chr_open_msmouse(void)
+{
+ return 0;
+}
diff --git a/qemu/stubs/chr-testdev.c b/qemu/stubs/chr-testdev.c
new file mode 100644
index 000000000..23112a2c0
--- /dev/null
+++ b/qemu/stubs/chr-testdev.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "sysemu/char.h"
+
+CharDriverState *chr_testdev_init(void)
+{
+ return 0;
+}
diff --git a/qemu/stubs/clock-warp.c b/qemu/stubs/clock-warp.c
new file mode 100644
index 000000000..5565118d1
--- /dev/null
+++ b/qemu/stubs/clock-warp.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "qemu/timer.h"
+
+void qemu_clock_warp(QEMUClockType type)
+{
+}
+
diff --git a/qemu/stubs/cpu-get-clock.c b/qemu/stubs/cpu-get-clock.c
new file mode 100644
index 000000000..5b34c976d
--- /dev/null
+++ b/qemu/stubs/cpu-get-clock.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "qemu/timer.h"
+
+int64_t cpu_get_clock(void)
+{
+ return get_clock_realtime();
+}
diff --git a/qemu/stubs/cpu-get-icount.c b/qemu/stubs/cpu-get-icount.c
new file mode 100644
index 000000000..d68585965
--- /dev/null
+++ b/qemu/stubs/cpu-get-icount.c
@@ -0,0 +1,9 @@
+#include "qemu-common.h"
+#include "qemu/timer.h"
+
+int use_icount;
+
+int64_t cpu_get_icount(void)
+{
+ abort();
+}
diff --git a/qemu/stubs/cpus.c b/qemu/stubs/cpus.c
new file mode 100644
index 000000000..8e6f06b11
--- /dev/null
+++ b/qemu/stubs/cpus.c
@@ -0,0 +1,10 @@
+#include "qemu-common.h"
+#include "qom/cpu.h"
+
+void cpu_resume(CPUState *cpu)
+{
+}
+
+void qemu_init_vcpu(CPUState *cpu)
+{
+}
diff --git a/qemu/stubs/dump.c b/qemu/stubs/dump.c
new file mode 100644
index 000000000..8c24eda84
--- /dev/null
+++ b/qemu/stubs/dump.c
@@ -0,0 +1,28 @@
+/*
+ * QEMU dump
+ *
+ * Copyright Fujitsu, Corp. 2011, 2012
+ *
+ * Authors:
+ * Wen Congyang <wency@cn.fujitsu.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include "qemu-common.h"
+#include "sysemu/dump-arch.h"
+#include "qmp-commands.h"
+
+int cpu_get_dump_info(ArchDumpInfo *info,
+ const struct GuestPhysBlockList *guest_phys_blocks)
+{
+ return -1;
+}
+
+ssize_t cpu_get_note_size(int class, int machine, int nr_cpus)
+{
+ return -1;
+}
+
diff --git a/qemu/stubs/fd-register.c b/qemu/stubs/fd-register.c
new file mode 100644
index 000000000..d0c34fd2a
--- /dev/null
+++ b/qemu/stubs/fd-register.c
@@ -0,0 +1,6 @@
+#include "qemu-common.h"
+#include "qemu/main-loop.h"
+
+void qemu_fd_register(int fd)
+{
+}
diff --git a/qemu/stubs/fdset-add-fd.c b/qemu/stubs/fdset-add-fd.c
new file mode 100644
index 000000000..ee1643708
--- /dev/null
+++ b/qemu/stubs/fdset-add-fd.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+int monitor_fdset_dup_fd_add(int64_t fdset_id, int dup_fd)
+{
+ return -1;
+}
diff --git a/qemu/stubs/fdset-find-fd.c b/qemu/stubs/fdset-find-fd.c
new file mode 100644
index 000000000..4f18344ba
--- /dev/null
+++ b/qemu/stubs/fdset-find-fd.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+int monitor_fdset_dup_fd_find(int dup_fd)
+{
+ return -1;
+}
diff --git a/qemu/stubs/fdset-get-fd.c b/qemu/stubs/fdset-get-fd.c
new file mode 100644
index 000000000..7112c155e
--- /dev/null
+++ b/qemu/stubs/fdset-get-fd.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+int monitor_fdset_get_fd(int64_t fdset_id, int flags)
+{
+ return -1;
+}
diff --git a/qemu/stubs/fdset-remove-fd.c b/qemu/stubs/fdset-remove-fd.c
new file mode 100644
index 000000000..7f6d61e61
--- /dev/null
+++ b/qemu/stubs/fdset-remove-fd.c
@@ -0,0 +1,6 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+void monitor_fdset_dup_fd_remove(int dupfd)
+{
+}
diff --git a/qemu/stubs/gdbstub.c b/qemu/stubs/gdbstub.c
new file mode 100644
index 000000000..f6a4553a3
--- /dev/null
+++ b/qemu/stubs/gdbstub.c
@@ -0,0 +1,7 @@
+#include "stdbool.h" /* bool (in exec/gdbstub.h) */
+#include "stddef.h" /* NULL */
+#include "exec/gdbstub.h" /* xml_builtin */
+
+const char *const xml_builtin[][2] = {
+ { NULL, NULL }
+};
diff --git a/qemu/stubs/get-fd.c b/qemu/stubs/get-fd.c
new file mode 100644
index 000000000..9f2c65cf0
--- /dev/null
+++ b/qemu/stubs/get-fd.c
@@ -0,0 +1,8 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+int monitor_get_fd(Monitor *mon, const char *name, Error **errp)
+{
+ error_setg(errp, "only QEMU supports file descriptor passing");
+ return -1;
+}
diff --git a/qemu/stubs/get-next-serial.c b/qemu/stubs/get-next-serial.c
new file mode 100644
index 000000000..40c56d13d
--- /dev/null
+++ b/qemu/stubs/get-next-serial.c
@@ -0,0 +1,3 @@
+#include "qemu-common.h"
+
+CharDriverState *serial_hds[0];
diff --git a/qemu/stubs/get-vm-name.c b/qemu/stubs/get-vm-name.c
new file mode 100644
index 000000000..e5f619ffa
--- /dev/null
+++ b/qemu/stubs/get-vm-name.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+
+const char *qemu_get_vm_name(void)
+{
+ return NULL;
+}
+
diff --git a/qemu/stubs/iothread-lock.c b/qemu/stubs/iothread-lock.c
new file mode 100644
index 000000000..dda6f6b58
--- /dev/null
+++ b/qemu/stubs/iothread-lock.c
@@ -0,0 +1,15 @@
+#include "qemu-common.h"
+#include "qemu/main-loop.h"
+
+bool qemu_mutex_iothread_locked(void)
+{
+ return true;
+}
+
+void qemu_mutex_lock_iothread(void)
+{
+}
+
+void qemu_mutex_unlock_iothread(void)
+{
+}
diff --git a/qemu/stubs/is-daemonized.c b/qemu/stubs/is-daemonized.c
new file mode 100644
index 000000000..c0ee9171a
--- /dev/null
+++ b/qemu/stubs/is-daemonized.c
@@ -0,0 +1,9 @@
+#include "qemu-common.h"
+
+/* Win32 has its own inline stub */
+#ifndef _WIN32
+bool is_daemonized(void)
+{
+ return false;
+}
+#endif
diff --git a/qemu/stubs/kvm.c b/qemu/stubs/kvm.c
new file mode 100644
index 000000000..e7c60b6e0
--- /dev/null
+++ b/qemu/stubs/kvm.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "sysemu/kvm.h"
+
+int kvm_arch_irqchip_create(KVMState *s)
+{
+ return 0;
+}
diff --git a/qemu/stubs/machine-init-done.c b/qemu/stubs/machine-init-done.c
new file mode 100644
index 000000000..28a92555b
--- /dev/null
+++ b/qemu/stubs/machine-init-done.c
@@ -0,0 +1,6 @@
+#include "qemu-common.h"
+#include "sysemu/sysemu.h"
+
+void qemu_add_machine_init_done_notifier(Notifier *notify)
+{
+}
diff --git a/qemu/stubs/migr-blocker.c b/qemu/stubs/migr-blocker.c
new file mode 100644
index 000000000..300df6e20
--- /dev/null
+++ b/qemu/stubs/migr-blocker.c
@@ -0,0 +1,10 @@
+#include "qemu-common.h"
+#include "migration/migration.h"
+
+void migrate_add_blocker(Error *reason)
+{
+}
+
+void migrate_del_blocker(Error *reason)
+{
+}
diff --git a/qemu/stubs/mon-is-qmp.c b/qemu/stubs/mon-is-qmp.c
new file mode 100644
index 000000000..dd26f19c8
--- /dev/null
+++ b/qemu/stubs/mon-is-qmp.c
@@ -0,0 +1,9 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+Monitor *cur_mon;
+
+bool monitor_cur_is_qmp(void)
+{
+ return false;
+}
diff --git a/qemu/stubs/mon-printf.c b/qemu/stubs/mon-printf.c
new file mode 100644
index 000000000..0ce2ca692
--- /dev/null
+++ b/qemu/stubs/mon-printf.c
@@ -0,0 +1,10 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+void monitor_printf(Monitor *mon, const char *fmt, ...)
+{
+}
+
+void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
+{
+}
diff --git a/qemu/stubs/monitor-init.c b/qemu/stubs/monitor-init.c
new file mode 100644
index 000000000..563902b41
--- /dev/null
+++ b/qemu/stubs/monitor-init.c
@@ -0,0 +1,6 @@
+#include "qemu-common.h"
+#include "monitor/monitor.h"
+
+void monitor_init(CharDriverState *chr, int flags)
+{
+}
diff --git a/qemu/stubs/notify-event.c b/qemu/stubs/notify-event.c
new file mode 100644
index 000000000..32f7289d3
--- /dev/null
+++ b/qemu/stubs/notify-event.c
@@ -0,0 +1,6 @@
+#include "qemu-common.h"
+#include "qemu/main-loop.h"
+
+void qemu_notify_event(void)
+{
+}
diff --git a/qemu/stubs/qemu-chr-open-spice.c b/qemu/stubs/qemu-chr-open-spice.c
new file mode 100644
index 000000000..f1c4849d9
--- /dev/null
+++ b/qemu/stubs/qemu-chr-open-spice.c
@@ -0,0 +1,14 @@
+#include "qemu-common.h"
+#include "ui/qemu-spice.h"
+
+CharDriverState *qemu_chr_open_spice_vmc(const char *type)
+{
+ return NULL;
+}
+
+#if SPICE_SERVER_VERSION >= 0x000c02
+CharDriverState *qemu_chr_open_spice_port(const char *name)
+{
+ return NULL;
+}
+#endif
diff --git a/qemu/stubs/qmp_pc_dimm_device_list.c b/qemu/stubs/qmp_pc_dimm_device_list.c
new file mode 100644
index 000000000..b584bd8b2
--- /dev/null
+++ b/qemu/stubs/qmp_pc_dimm_device_list.c
@@ -0,0 +1,12 @@
+#include "qom/object.h"
+#include "hw/mem/pc-dimm.h"
+
+int qmp_pc_dimm_device_list(Object *obj, void *opaque)
+{
+ return 0;
+}
+
+ram_addr_t get_current_ram_size(void)
+{
+ return ram_size;
+}
diff --git a/qemu/stubs/qtest.c b/qemu/stubs/qtest.c
new file mode 100644
index 000000000..dc17594bb
--- /dev/null
+++ b/qemu/stubs/qtest.c
@@ -0,0 +1,14 @@
+/*
+ * qtest stubs
+ *
+ * Copyright (c) 2014 Linaro Limited
+ * Written by Peter Maydell
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "sysemu/qtest.h"
+
+/* Needed for qtest_allowed() */
+bool qtest_allowed;
diff --git a/qemu/stubs/reset.c b/qemu/stubs/reset.c
new file mode 100644
index 000000000..ad287251e
--- /dev/null
+++ b/qemu/stubs/reset.c
@@ -0,0 +1,13 @@
+#include "hw/hw.h"
+
+/* Stub functions for binaries that never call qemu_devices_reset(),
+ * and don't need to keep track of the reset handler list.
+ */
+
+void qemu_register_reset(QEMUResetHandler *func, void *opaque)
+{
+}
+
+void qemu_unregister_reset(QEMUResetHandler *func, void *opaque)
+{
+}
diff --git a/qemu/stubs/runstate-check.c b/qemu/stubs/runstate-check.c
new file mode 100644
index 000000000..bd2e3757a
--- /dev/null
+++ b/qemu/stubs/runstate-check.c
@@ -0,0 +1,6 @@
+#include "sysemu/sysemu.h"
+
+bool runstate_check(RunState state)
+{
+ return state == RUN_STATE_PRELAUNCH;
+}
diff --git a/qemu/stubs/set-fd-handler.c b/qemu/stubs/set-fd-handler.c
new file mode 100644
index 000000000..a8481bc3c
--- /dev/null
+++ b/qemu/stubs/set-fd-handler.c
@@ -0,0 +1,10 @@
+#include "qemu-common.h"
+#include "qemu/main-loop.h"
+
+void qemu_set_fd_handler(int fd,
+ IOHandler *fd_read,
+ IOHandler *fd_write,
+ void *opaque)
+{
+ abort();
+}
diff --git a/qemu/stubs/slirp.c b/qemu/stubs/slirp.c
new file mode 100644
index 000000000..bd0ac7f27
--- /dev/null
+++ b/qemu/stubs/slirp.c
@@ -0,0 +1,11 @@
+#include "qemu-common.h"
+#include "slirp/slirp.h"
+
+void slirp_pollfds_fill(GArray *pollfds, uint32_t *timeout)
+{
+}
+
+void slirp_pollfds_poll(GArray *pollfds, int select_error)
+{
+}
+
diff --git a/qemu/stubs/sysbus.c b/qemu/stubs/sysbus.c
new file mode 100644
index 000000000..e13496582
--- /dev/null
+++ b/qemu/stubs/sysbus.c
@@ -0,0 +1,6 @@
+#include "hw/qdev-core.h"
+
+BusState *sysbus_get_default(void)
+{
+ return NULL;
+}
diff --git a/qemu/stubs/uuid.c b/qemu/stubs/uuid.c
new file mode 100644
index 000000000..ffc0ed40a
--- /dev/null
+++ b/qemu/stubs/uuid.c
@@ -0,0 +1,12 @@
+#include "qemu-common.h"
+#include "sysemu/sysemu.h"
+#include "qmp-commands.h"
+
+UuidInfo *qmp_query_uuid(Error **errp)
+{
+ UuidInfo *info = g_malloc0(sizeof(*info));
+
+ info->UUID = g_strdup(UUID_NONE);
+ return info;
+}
+
diff --git a/qemu/stubs/vc-init.c b/qemu/stubs/vc-init.c
new file mode 100644
index 000000000..308dfa080
--- /dev/null
+++ b/qemu/stubs/vc-init.c
@@ -0,0 +1,7 @@
+#include "qemu-common.h"
+#include "sysemu/char.h"
+
+CharDriverState *vc_init(ChardevVC *vc)
+{
+ return 0;
+}
diff --git a/qemu/stubs/vm-stop.c b/qemu/stubs/vm-stop.c
new file mode 100644
index 000000000..69fd86b2e
--- /dev/null
+++ b/qemu/stubs/vm-stop.c
@@ -0,0 +1,12 @@
+#include "qemu-common.h"
+#include "sysemu/sysemu.h"
+
+void qemu_system_vmstop_request_prepare(void)
+{
+ abort();
+}
+
+void qemu_system_vmstop_request(RunState state)
+{
+ abort();
+}
diff --git a/qemu/stubs/vmstate.c b/qemu/stubs/vmstate.c
new file mode 100644
index 000000000..778bc3fc6
--- /dev/null
+++ b/qemu/stubs/vmstate.c
@@ -0,0 +1,19 @@
+#include "qemu-common.h"
+#include "migration/vmstate.h"
+
+const VMStateDescription vmstate_dummy = {};
+
+int vmstate_register_with_alias_id(DeviceState *dev,
+ int instance_id,
+ const VMStateDescription *vmsd,
+ void *base, int alias_id,
+ int required_for_version)
+{
+ return 0;
+}
+
+void vmstate_unregister(DeviceState *dev,
+ const VMStateDescription *vmsd,
+ void *opaque)
+{
+}