Patchwork [04/10] coroutine: init co_runnable_bh during boot

login
register
mail settings
Submitter Lai Jiangshan
Date April 3, 2012, 8:38 a.m.
Message ID <1333442297-18932-4-git-send-email-laijs@cn.fujitsu.com>
Download mbox | patch
Permalink /patch/150357/
State New
Headers show

Comments

Lai Jiangshan - April 3, 2012, 8:38 a.m.
use __attribute__((constructor)) to do the initialization.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
 qemu-coroutine-lock.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
Paolo Bonzini - April 3, 2012, 11:31 a.m.
Il 03/04/2012 10:38, Lai Jiangshan ha scritto:
> use __attribute__((constructor)) to do the initialization.
> 
> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
> ---
>  qemu-coroutine-lock.c |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/qemu-coroutine-lock.c b/qemu-coroutine-lock.c
> index 90141cd..7c29bc4 100644
> --- a/qemu-coroutine-lock.c
> +++ b/qemu-coroutine-lock.c
> @@ -44,13 +44,14 @@ static void qemu_co_process_runnable(void *opaque)
>      }
>  }
>  
> +static void __attribute__((constructor)) co_runnable_bh_init(void)
> +{
> +    co_runnable_bh = qemu_bh_new(qemu_co_process_runnable, NULL);
> +}
> +
>  void qemu_co_queue_init(CoQueue *queue)
>  {
>      QTAILQ_INIT(&queue->entries);
> -
> -    if (!co_runnable_bh) {
> -        co_runnable_bh = qemu_bh_new(qemu_co_process_runnable, NULL);
> -    }
>  }
>  
>  void coroutine_fn qemu_co_queue_wait(CoQueue *queue)

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

Patch

diff --git a/qemu-coroutine-lock.c b/qemu-coroutine-lock.c
index 90141cd..7c29bc4 100644
--- a/qemu-coroutine-lock.c
+++ b/qemu-coroutine-lock.c
@@ -44,13 +44,14 @@  static void qemu_co_process_runnable(void *opaque)
     }
 }
 
+static void __attribute__((constructor)) co_runnable_bh_init(void)
+{
+    co_runnable_bh = qemu_bh_new(qemu_co_process_runnable, NULL);
+}
+
 void qemu_co_queue_init(CoQueue *queue)
 {
     QTAILQ_INIT(&queue->entries);
-
-    if (!co_runnable_bh) {
-        co_runnable_bh = qemu_bh_new(qemu_co_process_runnable, NULL);
-    }
 }
 
 void coroutine_fn qemu_co_queue_wait(CoQueue *queue)