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)
{
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)
{
notifier_list_remove(&migration_state_notifiers, notify);
notifier_remove(notify);
}
bool migration_is_active(MigrationState *s)

View File

@ -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);
}
}

View File

@ -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);

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)
{
notifier_list_remove(&clock->reset_notifiers, notifier);
notifier_remove(notifier);
}
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)
{
notifier_list_remove(&exit_notifiers, notify);
notifier_remove(notify);
}
static void qemu_run_exit_notifiers(void)