Patchwork [3/6] qemu/queue.h: typedef QTAILQ heads

login
register
mail settings
Submitter Paolo Bonzini
Date Dec. 6, 2018, 11:23 p.m.
Message ID <20181206232333.22408-4-pbonzini@redhat.com>
Download mbox | patch
Permalink /patch/674805/
State New
Headers show

Comments

Paolo Bonzini - Dec. 6, 2018, 11:23 p.m.
This will be needed when we change the QTAILQ head and elem structs
to unions.  However, it is also consistent with the usage elsewhere
in QEMU for other list head structs (see for example FsMountList).

Note that most QTAILQs only need their name in order to do backwards
walks.  Those do not break with the struct->union change, and anyway
the change will also remove the need to name heads when doing backwards
walks, so those are not touched here.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 exec.c            |  3 ++-
 include/qom/cpu.h |  5 +++--
 ui/input.c        | 14 ++++++++------
 3 files changed, 13 insertions(+), 9 deletions(-)
Markus Armbruster - Dec. 7, 2018, 7:30 a.m.
Paolo Bonzini <pbonzini@redhat.com> writes:

> This will be needed when we change the QTAILQ head and elem structs
> to unions.  However, it is also consistent with the usage elsewhere
> in QEMU for other list head structs (see for example FsMountList).
>
> Note that most QTAILQs only need their name in order to do backwards
> walks.  Those do not break with the struct->union change, and anyway
> the change will also remove the need to name heads when doing backwards
> walks, so those are not touched here.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Philippe Mathieu-Daudé - Dec. 7, 2018, 10:15 a.m.
On 12/7/18 12:23 AM, Paolo Bonzini wrote:
> This will be needed when we change the QTAILQ head and elem structs
> to unions.  However, it is also consistent with the usage elsewhere
> in QEMU for other list head structs (see for example FsMountList).
> 
> Note that most QTAILQs only need their name in order to do backwards
> walks.  Those do not break with the struct->union change, and anyway
> the change will also remove the need to name heads when doing backwards
> walks, so those are not touched here.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

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

> ---
>  exec.c            |  3 ++-
>  include/qom/cpu.h |  5 +++--
>  ui/input.c        | 14 ++++++++------
>  3 files changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/exec.c b/exec.c
> index b6b2007f27..a629c98eb5 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -94,7 +94,8 @@ int target_page_bits;
>  bool target_page_bits_decided;
>  #endif
>  
> -struct CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus);
> +CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus);
> +
>  /* current CPU in the current thread. It is only valid inside
>     cpu_exec() */
>  __thread CPUState *current_cpu;
> diff --git a/include/qom/cpu.h b/include/qom/cpu.h
> index 62aef77b87..4662a205c1 100644
> --- a/include/qom/cpu.h
> +++ b/include/qom/cpu.h
> @@ -435,8 +435,9 @@ struct CPUState {
>      GArray *iommu_notifiers;
>  };
>  
> -QTAILQ_HEAD(CPUTailQ, CPUState);
> -extern struct CPUTailQ cpus;
> +typedef QTAILQ_HEAD(CPUTailQ, CPUState) CPUTailQ;
> +extern CPUTailQ cpus;
> +
>  #define first_cpu        QTAILQ_FIRST_RCU(&cpus)
>  #define CPU_NEXT(cpu)    QTAILQ_NEXT_RCU(cpu, node)
>  #define CPU_FOREACH(cpu) QTAILQ_FOREACH_RCU(cpu, &cpus, node)
> diff --git a/ui/input.c b/ui/input.c
> index 7c9a4109c4..35c7964f64 100644
> --- a/ui/input.c
> +++ b/ui/input.c
> @@ -19,6 +19,9 @@ struct QemuInputHandlerState {
>  };
>  
>  typedef struct QemuInputEventQueue QemuInputEventQueue;
> +typedef QTAILQ_HEAD(QemuInputEventQueueHead, QemuInputEventQueue)
> +    QemuInputEventQueueHead;
> +
>  struct QemuInputEventQueue {
>      enum {
>          QEMU_INPUT_QUEUE_DELAY = 1,
> @@ -37,8 +40,7 @@ static QTAILQ_HEAD(, QemuInputHandlerState) handlers =
>  static NotifierList mouse_mode_notifiers =
>      NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers);
>  
> -static QTAILQ_HEAD(QemuInputEventQueueHead, QemuInputEventQueue) kbd_queue =
> -    QTAILQ_HEAD_INITIALIZER(kbd_queue);
> +static QemuInputEventQueueHead kbd_queue = QTAILQ_HEAD_INITIALIZER(kbd_queue);
>  static QEMUTimer *kbd_timer;
>  static uint32_t kbd_default_delay_ms = 10;
>  static uint32_t queue_count;
> @@ -257,7 +259,7 @@ static void qemu_input_event_trace(QemuConsole *src, InputEvent *evt)
>  
>  static void qemu_input_queue_process(void *opaque)
>  {
> -    struct QemuInputEventQueueHead *queue = opaque;
> +    QemuInputEventQueueHead *queue = opaque;
>      QemuInputEventQueue *item;
>  
>      g_assert(!QTAILQ_EMPTY(queue));
> @@ -288,7 +290,7 @@ static void qemu_input_queue_process(void *opaque)
>      }
>  }
>  
> -static void qemu_input_queue_delay(struct QemuInputEventQueueHead *queue,
> +static void qemu_input_queue_delay(QemuInputEventQueueHead *queue,
>                                     QEMUTimer *timer, uint32_t delay_ms)
>  {
>      QemuInputEventQueue *item = g_new0(QemuInputEventQueue, 1);
> @@ -306,7 +308,7 @@ static void qemu_input_queue_delay(struct QemuInputEventQueueHead *queue,
>      }
>  }
>  
> -static void qemu_input_queue_event(struct QemuInputEventQueueHead *queue,
> +static void qemu_input_queue_event(QemuInputEventQueueHead *queue,
>                                     QemuConsole *src, InputEvent *evt)
>  {
>      QemuInputEventQueue *item = g_new0(QemuInputEventQueue, 1);
> @@ -318,7 +320,7 @@ static void qemu_input_queue_event(struct QemuInputEventQueueHead *queue,
>      queue_count++;
>  }
>  
> -static void qemu_input_queue_sync(struct QemuInputEventQueueHead *queue)
> +static void qemu_input_queue_sync(QemuInputEventQueueHead *queue)
>  {
>      QemuInputEventQueue *item = g_new0(QemuInputEventQueue, 1);
>  
>

Patch

diff --git a/exec.c b/exec.c
index b6b2007f27..a629c98eb5 100644
--- a/exec.c
+++ b/exec.c
@@ -94,7 +94,8 @@  int target_page_bits;
 bool target_page_bits_decided;
 #endif
 
-struct CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus);
+CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus);
+
 /* current CPU in the current thread. It is only valid inside
    cpu_exec() */
 __thread CPUState *current_cpu;
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 62aef77b87..4662a205c1 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -435,8 +435,9 @@  struct CPUState {
     GArray *iommu_notifiers;
 };
 
-QTAILQ_HEAD(CPUTailQ, CPUState);
-extern struct CPUTailQ cpus;
+typedef QTAILQ_HEAD(CPUTailQ, CPUState) CPUTailQ;
+extern CPUTailQ cpus;
+
 #define first_cpu        QTAILQ_FIRST_RCU(&cpus)
 #define CPU_NEXT(cpu)    QTAILQ_NEXT_RCU(cpu, node)
 #define CPU_FOREACH(cpu) QTAILQ_FOREACH_RCU(cpu, &cpus, node)
diff --git a/ui/input.c b/ui/input.c
index 7c9a4109c4..35c7964f64 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -19,6 +19,9 @@  struct QemuInputHandlerState {
 };
 
 typedef struct QemuInputEventQueue QemuInputEventQueue;
+typedef QTAILQ_HEAD(QemuInputEventQueueHead, QemuInputEventQueue)
+    QemuInputEventQueueHead;
+
 struct QemuInputEventQueue {
     enum {
         QEMU_INPUT_QUEUE_DELAY = 1,
@@ -37,8 +40,7 @@  static QTAILQ_HEAD(, QemuInputHandlerState) handlers =
 static NotifierList mouse_mode_notifiers =
     NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers);
 
-static QTAILQ_HEAD(QemuInputEventQueueHead, QemuInputEventQueue) kbd_queue =
-    QTAILQ_HEAD_INITIALIZER(kbd_queue);
+static QemuInputEventQueueHead kbd_queue = QTAILQ_HEAD_INITIALIZER(kbd_queue);
 static QEMUTimer *kbd_timer;
 static uint32_t kbd_default_delay_ms = 10;
 static uint32_t queue_count;
@@ -257,7 +259,7 @@  static void qemu_input_event_trace(QemuConsole *src, InputEvent *evt)
 
 static void qemu_input_queue_process(void *opaque)
 {
-    struct QemuInputEventQueueHead *queue = opaque;
+    QemuInputEventQueueHead *queue = opaque;
     QemuInputEventQueue *item;
 
     g_assert(!QTAILQ_EMPTY(queue));
@@ -288,7 +290,7 @@  static void qemu_input_queue_process(void *opaque)
     }
 }
 
-static void qemu_input_queue_delay(struct QemuInputEventQueueHead *queue,
+static void qemu_input_queue_delay(QemuInputEventQueueHead *queue,
                                    QEMUTimer *timer, uint32_t delay_ms)
 {
     QemuInputEventQueue *item = g_new0(QemuInputEventQueue, 1);
@@ -306,7 +308,7 @@  static void qemu_input_queue_delay(struct QemuInputEventQueueHead *queue,
     }
 }
 
-static void qemu_input_queue_event(struct QemuInputEventQueueHead *queue,
+static void qemu_input_queue_event(QemuInputEventQueueHead *queue,
                                    QemuConsole *src, InputEvent *evt)
 {
     QemuInputEventQueue *item = g_new0(QemuInputEventQueue, 1);
@@ -318,7 +320,7 @@  static void qemu_input_queue_event(struct QemuInputEventQueueHead *queue,
     queue_count++;
 }
 
-static void qemu_input_queue_sync(struct QemuInputEventQueueHead *queue)
+static void qemu_input_queue_sync(QemuInputEventQueueHead *queue)
 {
     QemuInputEventQueue *item = g_new0(QemuInputEventQueue, 1);