diff mbox series

[1/3] qtest: Move accel code to accel/qtest.c

Message ID 20190422210448.2488-2-ehabkost@redhat.com
State New
Headers show
Series Remove AccelClass::available field | expand

Commit Message

Eduardo Habkost April 22, 2019, 9:04 p.m. UTC
QTest has two parts: the server (-qtest) and the accelerator
(-machine accel=qtest).  The accelerator depends on CONFIG_POSIX
due to its usage of sigwait(), but the server doesn't.

Move the accel code to accel/qtest.c.  Later we will disable
compilation of accel/qtest.c on non-POSIX systems.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 accel/qtest.c       | 55 +++++++++++++++++++++++++++++++++++++++++++++
 qtest.c             | 34 ----------------------------
 accel/Makefile.objs |  1 +
 3 files changed, 56 insertions(+), 34 deletions(-)
 create mode 100644 accel/qtest.c

Comments

Philippe Mathieu-Daudé April 22, 2019, 9:56 p.m. UTC | #1
Hi Eduardo,

On 4/22/19 11:04 PM, Eduardo Habkost wrote:
> QTest has two parts: the server (-qtest) and the accelerator
> (-machine accel=qtest).  The accelerator depends on CONFIG_POSIX
> due to its usage of sigwait(), but the server doesn't.
> 
> Move the accel code to accel/qtest.c.  Later we will disable
> compilation of accel/qtest.c on non-POSIX systems.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  accel/qtest.c       | 55 +++++++++++++++++++++++++++++++++++++++++++++
>  qtest.c             | 34 ----------------------------
>  accel/Makefile.objs |  1 +
>  3 files changed, 56 insertions(+), 34 deletions(-)
>  create mode 100644 accel/qtest.c
> 
> diff --git a/accel/qtest.c b/accel/qtest.c
> new file mode 100644
> index 0000000000..a02b3c26c7
> --- /dev/null
> +++ b/accel/qtest.c
> @@ -0,0 +1,55 @@
> +/*
> + * QTest accelerator code
> + *
> + * Copyright IBM, Corp. 2011
> + *
> + * Authors:
> + *  Anthony Liguori   <aliguori@us.ibm.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/osdep.h"
> +#include "qapi/error.h"
> +#include "qemu/module.h"

Why include "qemu/module.h"?
I guess you don't need it.

> +#include "qemu/option.h"
> +#include "qemu/config-file.h"
> +#include "sysemu/accel.h"
> +#include "sysemu/qtest.h"
> +#include "sysemu/cpus.h"
> +
> +static int qtest_init_accel(MachineState *ms)
> +{
> +    QemuOpts *opts = qemu_opts_create(qemu_find_opts("icount"), NULL, 0,
> +                                      &error_abort);
> +    qemu_opt_set(opts, "shift", "0", &error_abort);
> +    configure_icount(opts, &error_abort);
> +    qemu_opts_del(opts);
> +    return 0;
> +}
> +
> +static void qtest_accel_class_init(ObjectClass *oc, void *data)
> +{
> +    AccelClass *ac = ACCEL_CLASS(oc);
> +    ac->name = "QTest";
> +    ac->available = qtest_available;
> +    ac->init_machine = qtest_init_accel;
> +    ac->allowed = &qtest_allowed;
> +}
> +
> +#define TYPE_QTEST_ACCEL ACCEL_CLASS_NAME("qtest")
> +
> +static const TypeInfo qtest_accel_type = {
> +    .name = TYPE_QTEST_ACCEL,
> +    .parent = TYPE_ACCEL,
> +    .class_init = qtest_accel_class_init,
> +};
> +
> +static void qtest_type_init(void)
> +{
> +    type_register_static(&qtest_accel_type);
> +}
> +
> +type_init(qtest_type_init);
> diff --git a/qtest.c b/qtest.c
> index 527141785f..f2e2f27778 100644
> --- a/qtest.c
> +++ b/qtest.c
> @@ -749,16 +749,6 @@ static void qtest_event(void *opaque, int event)
>      }
>  }
>  
> -static int qtest_init_accel(MachineState *ms)
> -{
> -    QemuOpts *opts = qemu_opts_create(qemu_find_opts("icount"), NULL, 0,
> -                                      &error_abort);
> -    qemu_opt_set(opts, "shift", "0", &error_abort);
> -    configure_icount(opts, &error_abort);
> -    qemu_opts_del(opts);
> -    return 0;
> -}
> -
>  void qtest_init(const char *qtest_chrdev, const char *qtest_log, Error **errp)
>  {
>      Chardev *chr;
> @@ -791,27 +781,3 @@ bool qtest_driver(void)
>  {
>      return qtest_chr.chr != NULL;
>  }
> -
> -static void qtest_accel_class_init(ObjectClass *oc, void *data)
> -{
> -    AccelClass *ac = ACCEL_CLASS(oc);
> -    ac->name = "QTest";
> -    ac->available = qtest_available;
> -    ac->init_machine = qtest_init_accel;
> -    ac->allowed = &qtest_allowed;
> -}
> -
> -#define TYPE_QTEST_ACCEL ACCEL_CLASS_NAME("qtest")
> -
> -static const TypeInfo qtest_accel_type = {
> -    .name = TYPE_QTEST_ACCEL,
> -    .parent = TYPE_ACCEL,
> -    .class_init = qtest_accel_class_init,
> -};
> -
> -static void qtest_type_init(void)
> -{
> -    type_register_static(&qtest_accel_type);
> -}
> -
> -type_init(qtest_type_init);
> diff --git a/accel/Makefile.objs b/accel/Makefile.objs
> index c3718a10c5..2a5ed46940 100644
> --- a/accel/Makefile.objs
> +++ b/accel/Makefile.objs
> @@ -1,4 +1,5 @@
>  obj-$(CONFIG_SOFTMMU) += accel.o
> +obj-$(CONFIG_SOFTMMU) += qtest.o
>  obj-$(CONFIG_KVM) += kvm/
>  obj-$(CONFIG_TCG) += tcg/
>  obj-y += stubs/
> 

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Eduardo Habkost April 22, 2019, 10:08 p.m. UTC | #2
On Mon, Apr 22, 2019 at 11:56:18PM +0200, Philippe Mathieu-Daudé wrote:
> Hi Eduardo,
> 
> On 4/22/19 11:04 PM, Eduardo Habkost wrote:
> > QTest has two parts: the server (-qtest) and the accelerator
> > (-machine accel=qtest).  The accelerator depends on CONFIG_POSIX
> > due to its usage of sigwait(), but the server doesn't.
> > 
> > Move the accel code to accel/qtest.c.  Later we will disable
> > compilation of accel/qtest.c on non-POSIX systems.
> > 
[...]
> > +#include "qemu/module.h"
> 
> Why include "qemu/module.h"?
> I guess you don't need it.

That's where the type_init() macro is defined.


> > +type_init(qtest_type_init);
[...]


> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Thanks!
Philippe Mathieu-Daudé April 22, 2019, 10:17 p.m. UTC | #3
On 4/23/19 12:08 AM, Eduardo Habkost wrote:
> On Mon, Apr 22, 2019 at 11:56:18PM +0200, Philippe Mathieu-Daudé wrote:
>> Hi Eduardo,
>>
>> On 4/22/19 11:04 PM, Eduardo Habkost wrote:
>>> QTest has two parts: the server (-qtest) and the accelerator
>>> (-machine accel=qtest).  The accelerator depends on CONFIG_POSIX
>>> due to its usage of sigwait(), but the server doesn't.
>>>
>>> Move the accel code to accel/qtest.c.  Later we will disable
>>> compilation of accel/qtest.c on non-POSIX systems.
>>>
> [...]
>>> +#include "qemu/module.h"
>>
>> Why include "qemu/module.h"?
>> I guess you don't need it.
> 
> That's where the type_init() macro is defined.

Oh correct...

I tried to remove it/compile and it worked because it is pulled by:

"sysemu/cpus.h"
 -> "qemu/timer.h"
     -> "qemu-common.h"
         -> "qemu/module.h"

Thanks!

>>> +type_init(qtest_type_init);
> [...]
> 
> 
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> 
> Thanks!
>
Thomas Huth April 23, 2019, 5:07 a.m. UTC | #4
On 22/04/2019 23.04, Eduardo Habkost wrote:
> QTest has two parts: the server (-qtest) and the accelerator
> (-machine accel=qtest).  The accelerator depends on CONFIG_POSIX
> due to its usage of sigwait(), but the server doesn't.
> 
> Move the accel code to accel/qtest.c.  Later we will disable
> compilation of accel/qtest.c on non-POSIX systems.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  accel/qtest.c       | 55 +++++++++++++++++++++++++++++++++++++++++++++

New file ==> You should update MAINTAINERS here as well.

 Thomas
diff mbox series

Patch

diff --git a/accel/qtest.c b/accel/qtest.c
new file mode 100644
index 0000000000..a02b3c26c7
--- /dev/null
+++ b/accel/qtest.c
@@ -0,0 +1,55 @@ 
+/*
+ * QTest accelerator code
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.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/osdep.h"
+#include "qapi/error.h"
+#include "qemu/module.h"
+#include "qemu/option.h"
+#include "qemu/config-file.h"
+#include "sysemu/accel.h"
+#include "sysemu/qtest.h"
+#include "sysemu/cpus.h"
+
+static int qtest_init_accel(MachineState *ms)
+{
+    QemuOpts *opts = qemu_opts_create(qemu_find_opts("icount"), NULL, 0,
+                                      &error_abort);
+    qemu_opt_set(opts, "shift", "0", &error_abort);
+    configure_icount(opts, &error_abort);
+    qemu_opts_del(opts);
+    return 0;
+}
+
+static void qtest_accel_class_init(ObjectClass *oc, void *data)
+{
+    AccelClass *ac = ACCEL_CLASS(oc);
+    ac->name = "QTest";
+    ac->available = qtest_available;
+    ac->init_machine = qtest_init_accel;
+    ac->allowed = &qtest_allowed;
+}
+
+#define TYPE_QTEST_ACCEL ACCEL_CLASS_NAME("qtest")
+
+static const TypeInfo qtest_accel_type = {
+    .name = TYPE_QTEST_ACCEL,
+    .parent = TYPE_ACCEL,
+    .class_init = qtest_accel_class_init,
+};
+
+static void qtest_type_init(void)
+{
+    type_register_static(&qtest_accel_type);
+}
+
+type_init(qtest_type_init);
diff --git a/qtest.c b/qtest.c
index 527141785f..f2e2f27778 100644
--- a/qtest.c
+++ b/qtest.c
@@ -749,16 +749,6 @@  static void qtest_event(void *opaque, int event)
     }
 }
 
-static int qtest_init_accel(MachineState *ms)
-{
-    QemuOpts *opts = qemu_opts_create(qemu_find_opts("icount"), NULL, 0,
-                                      &error_abort);
-    qemu_opt_set(opts, "shift", "0", &error_abort);
-    configure_icount(opts, &error_abort);
-    qemu_opts_del(opts);
-    return 0;
-}
-
 void qtest_init(const char *qtest_chrdev, const char *qtest_log, Error **errp)
 {
     Chardev *chr;
@@ -791,27 +781,3 @@  bool qtest_driver(void)
 {
     return qtest_chr.chr != NULL;
 }
-
-static void qtest_accel_class_init(ObjectClass *oc, void *data)
-{
-    AccelClass *ac = ACCEL_CLASS(oc);
-    ac->name = "QTest";
-    ac->available = qtest_available;
-    ac->init_machine = qtest_init_accel;
-    ac->allowed = &qtest_allowed;
-}
-
-#define TYPE_QTEST_ACCEL ACCEL_CLASS_NAME("qtest")
-
-static const TypeInfo qtest_accel_type = {
-    .name = TYPE_QTEST_ACCEL,
-    .parent = TYPE_ACCEL,
-    .class_init = qtest_accel_class_init,
-};
-
-static void qtest_type_init(void)
-{
-    type_register_static(&qtest_accel_type);
-}
-
-type_init(qtest_type_init);
diff --git a/accel/Makefile.objs b/accel/Makefile.objs
index c3718a10c5..2a5ed46940 100644
--- a/accel/Makefile.objs
+++ b/accel/Makefile.objs
@@ -1,4 +1,5 @@ 
 obj-$(CONFIG_SOFTMMU) += accel.o
+obj-$(CONFIG_SOFTMMU) += qtest.o
 obj-$(CONFIG_KVM) += kvm/
 obj-$(CONFIG_TCG) += tcg/
 obj-y += stubs/