notifier: switch to QLIST
Notifiers do not need to access both ends of the list, and using a QLIST also simplifies the API. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
c77de088b1
commit
31552529a7
2
input.c
2
input.c
@ -268,5 +268,5 @@ void qemu_add_mouse_mode_change_notifier(Notifier *notify)
|
||||
|
||||
void qemu_remove_mouse_mode_change_notifier(Notifier *notify)
|
||||
{
|
||||
notifier_list_remove(&mouse_mode_notifiers, notify);
|
||||
notifier_remove(notify);
|
||||
}
|
||||
|
@ -335,7 +335,7 @@ void add_migration_state_change_notifier(Notifier *notify)
|
||||
|
||||
void remove_migration_state_change_notifier(Notifier *notify)
|
||||
{
|
||||
notifier_list_remove(&migration_state_notifiers, notify);
|
||||
notifier_remove(notify);
|
||||
}
|
||||
|
||||
bool migration_is_active(MigrationState *s)
|
||||
|
10
notify.c
10
notify.c
@ -18,24 +18,24 @@
|
||||
|
||||
void notifier_list_init(NotifierList *list)
|
||||
{
|
||||
QTAILQ_INIT(&list->notifiers);
|
||||
QLIST_INIT(&list->notifiers);
|
||||
}
|
||||
|
||||
void notifier_list_add(NotifierList *list, Notifier *notifier)
|
||||
{
|
||||
QTAILQ_INSERT_HEAD(&list->notifiers, notifier, node);
|
||||
QLIST_INSERT_HEAD(&list->notifiers, notifier, node);
|
||||
}
|
||||
|
||||
void notifier_list_remove(NotifierList *list, Notifier *notifier)
|
||||
void notifier_remove(Notifier *notifier)
|
||||
{
|
||||
QTAILQ_REMOVE(&list->notifiers, notifier, node);
|
||||
QLIST_REMOVE(notifier, node);
|
||||
}
|
||||
|
||||
void notifier_list_notify(NotifierList *list, void *data)
|
||||
{
|
||||
Notifier *notifier, *next;
|
||||
|
||||
QTAILQ_FOREACH_SAFE(notifier, &list->notifiers, node, next) {
|
||||
QLIST_FOREACH_SAFE(notifier, &list->notifiers, node, next) {
|
||||
notifier->notify(notifier, data);
|
||||
}
|
||||
}
|
||||
|
8
notify.h
8
notify.h
@ -21,22 +21,22 @@ typedef struct Notifier Notifier;
|
||||
struct Notifier
|
||||
{
|
||||
void (*notify)(Notifier *notifier, void *data);
|
||||
QTAILQ_ENTRY(Notifier) node;
|
||||
QLIST_ENTRY(Notifier) node;
|
||||
};
|
||||
|
||||
typedef struct NotifierList
|
||||
{
|
||||
QTAILQ_HEAD(, Notifier) notifiers;
|
||||
QLIST_HEAD(, Notifier) notifiers;
|
||||
} NotifierList;
|
||||
|
||||
#define NOTIFIER_LIST_INITIALIZER(head) \
|
||||
{ QTAILQ_HEAD_INITIALIZER((head).notifiers) }
|
||||
{ QLIST_HEAD_INITIALIZER((head).notifiers) }
|
||||
|
||||
void notifier_list_init(NotifierList *list);
|
||||
|
||||
void notifier_list_add(NotifierList *list, Notifier *notifier);
|
||||
|
||||
void notifier_list_remove(NotifierList *list, Notifier *notifier);
|
||||
void notifier_remove(Notifier *notifier);
|
||||
|
||||
void notifier_list_notify(NotifierList *list, void *data);
|
||||
|
||||
|
@ -453,7 +453,7 @@ void qemu_register_clock_reset_notifier(QEMUClock *clock, Notifier *notifier)
|
||||
|
||||
void qemu_unregister_clock_reset_notifier(QEMUClock *clock, Notifier *notifier)
|
||||
{
|
||||
notifier_list_remove(&clock->reset_notifiers, notifier);
|
||||
notifier_remove(notifier);
|
||||
}
|
||||
|
||||
void init_clocks(void)
|
||||
|
Loading…
Reference in New Issue
Block a user