Commit 31552529 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Anthony Liguori
Browse files

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: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parent c77de088
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
}
+1 −1
Original line number Diff line number Diff line
@@ -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)
+5 −5
Original line number Diff line number Diff line
@@ -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);
    }
}
+4 −4
Original line number Diff line number Diff line
@@ -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);

+1 −1
Original line number Diff line number Diff line
@@ -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