[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 01/22] util/qemu-thread-posix: use TSA_NO_TSA to suppress clang TS
From: |
Kevin Wolf |
Subject: |
[PULL 01/22] util/qemu-thread-posix: use TSA_NO_TSA to suppress clang TSA warnings in FreeBSD |
Date: |
Fri, 17 Feb 2023 16:09:33 +0100 |
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
FreeBSD implements pthread headers using TSA (thread safety analysis)
annotations, therefore when an application is compiled with
-Wthread-safety there are some locking/annotation requirements that the
user of the pthread API has to follow.
This will also be the case in QEMU, since util/qemu-thread-posix.c uses
the pthread API. Therefore when building it with -Wthread-safety, the
compiler will throw warnings because the functions are not properly
annotated. We need TSA to be enabled because it ensures that the
critical sections of an annotated variable are properly locked.
In order to make the compiler happy and avoid adding all the necessary
macros to all callers (lock functions should use TSA_ACQUIRE, while
unlock TSA_RELEASE, and this applies to all users of pthread_mutex_lock
and pthread_mutex_unlock), simply use TSA_NO_TSA to supppress such
warnings.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Message-Id: <20230117135203.3049709-2-eesposit@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
include/qemu/thread.h | 14 +++++++++-----
util/qemu-thread-posix.c | 2 +-
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/include/qemu/thread.h b/include/qemu/thread.h
index 7841084199..dd3822d7ce 100644
--- a/include/qemu/thread.h
+++ b/include/qemu/thread.h
@@ -3,6 +3,7 @@
#include "qemu/processor.h"
#include "qemu/atomic.h"
+#include "qemu/clang-tsa.h"
typedef struct QemuCond QemuCond;
typedef struct QemuSemaphore QemuSemaphore;
@@ -24,9 +25,12 @@ typedef struct QemuThread QemuThread;
void qemu_mutex_init(QemuMutex *mutex);
void qemu_mutex_destroy(QemuMutex *mutex);
-int qemu_mutex_trylock_impl(QemuMutex *mutex, const char *file, const int
line);
-void qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, const int line);
-void qemu_mutex_unlock_impl(QemuMutex *mutex, const char *file, const int
line);
+int TSA_NO_TSA qemu_mutex_trylock_impl(QemuMutex *mutex, const char *file,
+ const int line);
+void TSA_NO_TSA qemu_mutex_lock_impl(QemuMutex *mutex, const char *file,
+ const int line);
+void TSA_NO_TSA qemu_mutex_unlock_impl(QemuMutex *mutex, const char *file,
+ const int line);
void qemu_rec_mutex_init(QemuRecMutex *mutex);
void qemu_rec_mutex_destroy(QemuRecMutex *mutex);
@@ -153,8 +157,8 @@ void qemu_cond_destroy(QemuCond *cond);
*/
void qemu_cond_signal(QemuCond *cond);
void qemu_cond_broadcast(QemuCond *cond);
-void qemu_cond_wait_impl(QemuCond *cond, QemuMutex *mutex,
- const char *file, const int line);
+void TSA_NO_TSA qemu_cond_wait_impl(QemuCond *cond, QemuMutex *mutex,
+ const char *file, const int line);
bool qemu_cond_timedwait_impl(QemuCond *cond, QemuMutex *mutex, int ms,
const char *file, const int line);
diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c
index bae938c670..2dd1069cd3 100644
--- a/util/qemu-thread-posix.c
+++ b/util/qemu-thread-posix.c
@@ -223,7 +223,7 @@ void qemu_cond_wait_impl(QemuCond *cond, QemuMutex *mutex,
const char *file, con
error_exit(err, __func__);
}
-static bool
+static bool TSA_NO_TSA
qemu_cond_timedwait_ts(QemuCond *cond, QemuMutex *mutex, struct timespec *ts,
const char *file, const int line)
{
--
2.39.2
- [PULL 00/22] Block layer patches, Kevin Wolf, 2023/02/17
- [PULL 01/22] util/qemu-thread-posix: use TSA_NO_TSA to suppress clang TSA warnings in FreeBSD,
Kevin Wolf <=
- [PULL 04/22] curl: Fix error path in curl_open(), Kevin Wolf, 2023/02/17
- [PULL 03/22] configure: Enable -Wthread-safety if present, Kevin Wolf, 2023/02/17
- [PULL 02/22] bsd-user/mmap: use TSA_NO_TSA to suppress clang TSA warnings in FreeBSD, Kevin Wolf, 2023/02/17
- [PULL 06/22] block: Create no_co_wrappers for open functions, Kevin Wolf, 2023/02/17
- [PULL 09/22] qcow: Fix .bdrv_co_create(_opts) to open images with no_co_wrapper, Kevin Wolf, 2023/02/17
- [PULL 12/22] vdi: Fix .bdrv_co_create(_opts) to open images with no_co_wrapper, Kevin Wolf, 2023/02/17
- [PULL 08/22] parallels: Fix .bdrv_co_create(_opts) to open images with no_co_wrapper, Kevin Wolf, 2023/02/17
- [PULL 17/22] block: Assert non-coroutine context for bdrv_open_inherit(), Kevin Wolf, 2023/02/17
- [PULL 13/22] vhdx: Fix .bdrv_co_create(_opts) to open images with no_co_wrapper, Kevin Wolf, 2023/02/17
- [PULL 05/22] block-coroutine-wrapper: Introduce no_co_wrapper, Kevin Wolf, 2023/02/17