[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 1/2] QSLIST: add atomic replace operation
From: |
wanghonghao |
Subject: |
[PATCH v3 1/2] QSLIST: add atomic replace operation |
Date: |
Fri, 16 Oct 2020 19:26:39 +0800 |
Replace a queue with another atomicly. It's useful when we need to transfer
queues between threads.
Signed-off-by: wanghonghao <wanghonghao@bytedance.com>
---
include/qemu/queue.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/qemu/queue.h b/include/qemu/queue.h
index e029e7bf66..1f0cbdf87e 100644
--- a/include/qemu/queue.h
+++ b/include/qemu/queue.h
@@ -226,6 +226,10 @@ struct {
\
(dest)->slh_first = qatomic_xchg(&(src)->slh_first, NULL); \
} while (/*CONSTCOND*/0)
+#define QSLIST_REPLACE_ATOMIC(dest, src, old) do { \
+ (old)->slh_first = qatomic_xchg(&(dest)->slh_first, (src)->slh_first);
\
+} while (/*CONSTCOND*/0)
+
#define QSLIST_REMOVE_HEAD(head, field) do { \
typeof((head)->slh_first) elm = (head)->slh_first; \
(head)->slh_first = elm->field.sle_next; \
--
2.24.3 (Apple Git-128)
- [PATCH v3 1/2] QSLIST: add atomic replace operation,
wanghonghao <=