[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 03/11] util: use RCU accessors for notifiers
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 03/11] util: use RCU accessors for notifiers |
Date: |
Thu, 6 Jul 2017 18:38:20 +0200 |
This provides more flexibility for its users.
Signed-off-by: Paolo Bonzini <address@hidden>
---
util/notify.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/util/notify.c b/util/notify.c
index 06de63a839..16fff8d07d 100644
--- a/util/notify.c
+++ b/util/notify.c
@@ -16,6 +16,7 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
#include "qemu/notify.h"
+#include "qemu/rcu_queue.h"
void notifier_list_init(NotifierList *list)
{
@@ -24,19 +25,19 @@ void notifier_list_init(NotifierList *list)
void notifier_list_add(NotifierList *list, Notifier *notifier)
{
- QLIST_INSERT_HEAD(&list->notifiers, notifier, node);
+ QLIST_INSERT_HEAD_RCU(&list->notifiers, notifier, node);
}
void notifier_remove(Notifier *notifier)
{
- QLIST_REMOVE(notifier, node);
+ QLIST_REMOVE_RCU(notifier, node);
}
void notifier_list_notify(NotifierList *list, void *data)
{
Notifier *notifier, *next;
- QLIST_FOREACH_SAFE(notifier, &list->notifiers, node, next) {
+ QLIST_FOREACH_SAFE_RCU(notifier, &list->notifiers, node, next) {
notifier->notify(notifier, data);
}
}
@@ -49,12 +50,12 @@ void notifier_with_return_list_init(NotifierWithReturnList
*list)
void notifier_with_return_list_add(NotifierWithReturnList *list,
NotifierWithReturn *notifier)
{
- QLIST_INSERT_HEAD(&list->notifiers, notifier, node);
+ QLIST_INSERT_HEAD_RCU(&list->notifiers, notifier, node);
}
void notifier_with_return_remove(NotifierWithReturn *notifier)
{
- QLIST_REMOVE(notifier, node);
+ QLIST_REMOVE_RCU(notifier, node);
}
int notifier_with_return_list_notify(NotifierWithReturnList *list, void *data)
@@ -62,7 +63,7 @@ int notifier_with_return_list_notify(NotifierWithReturnList
*list, void *data)
NotifierWithReturn *notifier, *next;
int ret = 0;
- QLIST_FOREACH_SAFE(notifier, &list->notifiers, node, next) {
+ QLIST_FOREACH_SAFE_RCU(notifier, &list->notifiers, node, next) {
ret = notifier->notify(notifier, data);
if (ret != 0) {
break;
--
2.13.0
[Qemu-devel] [PATCH 05/11] block-backup: add reqs_lock, Paolo Bonzini, 2017/07/06
[Qemu-devel] [PATCH 08/11] block: drain I/O around key management, Paolo Bonzini, 2017/07/06
[Qemu-devel] [PATCH 06/11] block: add a few more notes on locking, Paolo Bonzini, 2017/07/06
[Qemu-devel] [PATCH 09/11] block/replication: do not acquire AioContext, Paolo Bonzini, 2017/07/06