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:
Paolo Bonzini 2012-01-13 17:34:01 +01:00 committed by Anthony Liguori
parent c77de088b1
commit 31552529a7
6 changed files with 13 additions and 13 deletions

View File

@ -268,5 +268,5 @@ void qemu_add_mouse_mode_change_notifier(Notifier *notify)
void qemu_remove_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);
} }

View File

@ -335,7 +335,7 @@ void add_migration_state_change_notifier(Notifier *notify)
void remove_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) bool migration_is_active(MigrationState *s)

View File

@ -18,24 +18,24 @@
void notifier_list_init(NotifierList *list) void notifier_list_init(NotifierList *list)
{ {
QTAILQ_INIT(&list->notifiers); QLIST_INIT(&list->notifiers);
} }
void notifier_list_add(NotifierList *list, Notifier *notifier) 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) void notifier_list_notify(NotifierList *list, void *data)
{ {
Notifier *notifier, *next; Notifier *notifier, *next;
QTAILQ_FOREACH_SAFE(notifier, &list->notifiers, node, next) { QLIST_FOREACH_SAFE(notifier, &list->notifiers, node, next) {
notifier->notify(notifier, data); notifier->notify(notifier, data);
} }
} }

View File

@ -21,22 +21,22 @@ typedef struct Notifier Notifier;
struct Notifier struct Notifier
{ {
void (*notify)(Notifier *notifier, void *data); void (*notify)(Notifier *notifier, void *data);
QTAILQ_ENTRY(Notifier) node; QLIST_ENTRY(Notifier) node;
}; };
typedef struct NotifierList typedef struct NotifierList
{ {
QTAILQ_HEAD(, Notifier) notifiers; QLIST_HEAD(, Notifier) notifiers;
} NotifierList; } NotifierList;
#define NOTIFIER_LIST_INITIALIZER(head) \ #define NOTIFIER_LIST_INITIALIZER(head) \
{ QTAILQ_HEAD_INITIALIZER((head).notifiers) } { QLIST_HEAD_INITIALIZER((head).notifiers) }
void notifier_list_init(NotifierList *list); void notifier_list_init(NotifierList *list);
void notifier_list_add(NotifierList *list, Notifier *notifier); 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); void notifier_list_notify(NotifierList *list, void *data);

View File

@ -453,7 +453,7 @@ void qemu_register_clock_reset_notifier(QEMUClock *clock, Notifier *notifier)
void qemu_unregister_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) void init_clocks(void)

2
vl.c
View File

@ -2093,7 +2093,7 @@ void qemu_add_exit_notifier(Notifier *notify)
void qemu_remove_exit_notifier(Notifier *notify) void qemu_remove_exit_notifier(Notifier *notify)
{ {
notifier_list_remove(&exit_notifiers, notify); notifier_remove(notify);
} }
static void qemu_run_exit_notifiers(void) static void qemu_run_exit_notifiers(void)