All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: Richard Henderson <richard.henderson@linaro.org>, qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, ehabkost@redhat.com
Subject: Re: [PATCH v2 5/8] util: Use unique type for QemuRecMutex in thread-posix.h
Date: Tue, 15 Jun 2021 09:56:18 +0200	[thread overview]
Message-ID: <d75a3193-ad3c-7deb-4528-96383a4cd816@redhat.com> (raw)
In-Reply-To: <20210614233143.1221879-6-richard.henderson@linaro.org>

On 15/06/2021 01.31, Richard Henderson wrote:
> We will shortly convert lockable.h to _Generic, and we cannot
> have two compatible types in the same expansion.  Wrap QemuMutex
> in a struct, and unwrap in qemu-thread-posix.c.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   include/qemu/thread-posix.h | 10 ++++++++--
>   util/qemu-thread-posix.c    | 12 ++++++------
>   2 files changed, 14 insertions(+), 8 deletions(-)
> 
> diff --git a/include/qemu/thread-posix.h b/include/qemu/thread-posix.h
> index cf8bc90468..b792e6ef37 100644
> --- a/include/qemu/thread-posix.h
> +++ b/include/qemu/thread-posix.h
> @@ -4,8 +4,6 @@
>   #include <pthread.h>
>   #include <semaphore.h>
>   
> -typedef QemuMutex QemuRecMutex;
> -
>   struct QemuMutex {
>       pthread_mutex_t lock;
>   #ifdef CONFIG_DEBUG_MUTEX
> @@ -15,6 +13,14 @@ struct QemuMutex {
>       bool initialized;
>   };
>   
> +/*
> + * QemuRecMutex cannot be a typedef of QemuMutex lest we have two
> + * compatible cases in _Generic.  See qemu/lockable.h.
> + */
> +typedef struct QemuRecMutex {
> +    QemuMutex m;
> +} QemuRecMutex;
> +
>   struct QemuCond {
>       pthread_cond_t cond;
>       bool initialized;
> diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c
> index d990826ed8..fd9d714038 100644
> --- a/util/qemu-thread-posix.c
> +++ b/util/qemu-thread-posix.c
> @@ -116,32 +116,32 @@ void qemu_rec_mutex_init(QemuRecMutex *mutex)
>   
>       pthread_mutexattr_init(&attr);
>       pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
> -    err = pthread_mutex_init(&mutex->lock, &attr);
> +    err = pthread_mutex_init(&mutex->m.lock, &attr);
>       pthread_mutexattr_destroy(&attr);
>       if (err) {
>           error_exit(err, __func__);
>       }
> -    mutex->initialized = true;
> +    mutex->m.initialized = true;
>   }
>   
>   void qemu_rec_mutex_destroy(QemuRecMutex *mutex)
>   {
> -    qemu_mutex_destroy(mutex);
> +    qemu_mutex_destroy(&mutex->m);
>   }
>   
>   void qemu_rec_mutex_lock_impl(QemuRecMutex *mutex, const char *file, int line)
>   {
> -    qemu_mutex_lock_impl(mutex, file, line);
> +    qemu_mutex_lock_impl(&mutex->m, file, line);
>   }
>   
>   int qemu_rec_mutex_trylock_impl(QemuRecMutex *mutex, const char *file, int line)
>   {
> -    return qemu_mutex_trylock_impl(mutex, file, line);
> +    return qemu_mutex_trylock_impl(&mutex->m, file, line);
>   }
>   
>   void qemu_rec_mutex_unlock_impl(QemuRecMutex *mutex, const char *file, int line)
>   {
> -    qemu_mutex_unlock_impl(mutex, file, line);
> +    qemu_mutex_unlock_impl(&mutex->m, file, line);
>   }
>   
>   void qemu_cond_init(QemuCond *cond)
> 

Reviewed-by: Thomas Huth <thuth@redhat.com>



  reply	other threads:[~2021-06-15  7:57 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-14 23:31 [PATCH v2 0/8] configure: Change to -std=gnu11 Richard Henderson
2021-06-14 23:31 ` [PATCH v2 1/8] configure: Use -std=gnu11 Richard Henderson
2021-06-15  7:43   ` Thomas Huth
2021-06-15 10:10   ` Alex Bennée
2021-06-15 13:49   ` Philippe Mathieu-Daudé
2021-06-14 23:31 ` [PATCH v2 2/8] softfloat: Use _Generic instead of QEMU_GENERIC Richard Henderson
2021-06-15  7:48   ` Thomas Huth
2021-06-15 10:18   ` Alex Bennée
2021-06-14 23:31 ` [PATCH v2 3/8] util: Use real functions for thread-posix QemuRecMutex Richard Henderson
2021-06-15  7:50   ` Thomas Huth
2021-06-15 10:54   ` Alex Bennée
2021-06-14 23:31 ` [PATCH v2 4/8] util: Pass file+line to qemu_rec_mutex_unlock_impl Richard Henderson
2021-06-15 10:56   ` Alex Bennée
2021-06-15 13:51   ` Philippe Mathieu-Daudé
2021-06-14 23:31 ` [PATCH v2 5/8] util: Use unique type for QemuRecMutex in thread-posix.h Richard Henderson
2021-06-15  7:56   ` Thomas Huth [this message]
2021-06-15 10:57   ` Alex Bennée
2021-06-14 23:31 ` [PATCH v2 6/8] include/qemu/lockable: Use _Generic instead of QEMU_GENERIC Richard Henderson
2021-06-15 11:25   ` Alex Bennée
2021-06-14 23:31 ` [PATCH v2 7/8] qemu/compiler: Remove QEMU_GENERIC Richard Henderson
2021-06-15 11:26   ` Alex Bennée
2021-06-14 23:31 ` [PATCH v2 8/8] configure: Remove probe for _Static_assert Richard Henderson
2021-06-15  7:58   ` Thomas Huth
2021-06-15 10:29   ` Alex Bennée
2021-06-14 23:42 ` [PATCH v2 0/8] configure: Change to -std=gnu11 no-reply
2021-06-16 13:04 ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d75a3193-ad3c-7deb-4528-96383a4cd816@redhat.com \
    --to=thuth@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.