|
@@ -33,6 +33,7 @@
|
|
#include "qemu/error-report.h"
|
|
#include "qemu/error-report.h"
|
|
#include "qemu/queue.h"
|
|
#include "qemu/queue.h"
|
|
#include "qemu/compiler.h"
|
|
#include "qemu/compiler.h"
|
|
|
|
+#include "qom/object.h"
|
|
|
|
|
|
#ifndef _WIN32
|
|
#ifndef _WIN32
|
|
#include <sys/wait.h>
|
|
#include <sys/wait.h>
|
|
@@ -184,6 +185,61 @@ int qemu_init_main_loop(Error **errp)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void main_loop_update_params(EventLoopBase *base, Error **errp)
|
|
|
|
+{
|
|
|
|
+ if (!qemu_aio_context) {
|
|
|
|
+ error_setg(errp, "qemu aio context not ready");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ aio_context_set_aio_params(qemu_aio_context, base->aio_max_batch, errp);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+MainLoop *mloop;
|
|
|
|
+
|
|
|
|
+static void main_loop_init(EventLoopBase *base, Error **errp)
|
|
|
|
+{
|
|
|
|
+ MainLoop *m = MAIN_LOOP(base);
|
|
|
|
+
|
|
|
|
+ if (mloop) {
|
|
|
|
+ error_setg(errp, "only one main-loop instance allowed");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ main_loop_update_params(base, errp);
|
|
|
|
+
|
|
|
|
+ mloop = m;
|
|
|
|
+ return;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static bool main_loop_can_be_deleted(EventLoopBase *base)
|
|
|
|
+{
|
|
|
|
+ return false;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void main_loop_class_init(ObjectClass *oc, void *class_data)
|
|
|
|
+{
|
|
|
|
+ EventLoopBaseClass *bc = EVENT_LOOP_BASE_CLASS(oc);
|
|
|
|
+
|
|
|
|
+ bc->init = main_loop_init;
|
|
|
|
+ bc->update_params = main_loop_update_params;
|
|
|
|
+ bc->can_be_deleted = main_loop_can_be_deleted;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static const TypeInfo main_loop_info = {
|
|
|
|
+ .name = TYPE_MAIN_LOOP,
|
|
|
|
+ .parent = TYPE_EVENT_LOOP_BASE,
|
|
|
|
+ .class_init = main_loop_class_init,
|
|
|
|
+ .instance_size = sizeof(MainLoop),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static void main_loop_register_types(void)
|
|
|
|
+{
|
|
|
|
+ type_register_static(&main_loop_info);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type_init(main_loop_register_types)
|
|
|
|
+
|
|
static int max_priority;
|
|
static int max_priority;
|
|
|
|
|
|
#ifndef _WIN32
|
|
#ifndef _WIN32
|