1025c32ffcd9f682cd761a836fe8798738d1648f2David Turner/*
2025c32ffcd9f682cd761a836fe8798738d1648f2David Turner * Notifier lists
3025c32ffcd9f682cd761a836fe8798738d1648f2David Turner *
4025c32ffcd9f682cd761a836fe8798738d1648f2David Turner * Copyright IBM, Corp. 2010
5025c32ffcd9f682cd761a836fe8798738d1648f2David Turner *
6025c32ffcd9f682cd761a836fe8798738d1648f2David Turner * Authors:
7025c32ffcd9f682cd761a836fe8798738d1648f2David Turner *  Anthony Liguori   <aliguori@us.ibm.com>
8025c32ffcd9f682cd761a836fe8798738d1648f2David Turner *
9025c32ffcd9f682cd761a836fe8798738d1648f2David Turner * This work is licensed under the terms of the GNU GPL, version 2.  See
10025c32ffcd9f682cd761a836fe8798738d1648f2David Turner * the COPYING file in the top-level directory.
11025c32ffcd9f682cd761a836fe8798738d1648f2David Turner *
12025c32ffcd9f682cd761a836fe8798738d1648f2David Turner */
13025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
14025c32ffcd9f682cd761a836fe8798738d1648f2David Turner#include "qemu-common.h"
15025c32ffcd9f682cd761a836fe8798738d1648f2David Turner#include "notify.h"
16025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
17025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_init(NotifierList *list)
18025c32ffcd9f682cd761a836fe8798738d1648f2David Turner{
19025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    QTAILQ_INIT(&list->notifiers);
20025c32ffcd9f682cd761a836fe8798738d1648f2David Turner}
21025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
22025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_add(NotifierList *list, Notifier *notifier)
23025c32ffcd9f682cd761a836fe8798738d1648f2David Turner{
24025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    QTAILQ_INSERT_HEAD(&list->notifiers, notifier, node);
25025c32ffcd9f682cd761a836fe8798738d1648f2David Turner}
26025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
27025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_remove(NotifierList *list, Notifier *notifier)
28025c32ffcd9f682cd761a836fe8798738d1648f2David Turner{
29025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    QTAILQ_REMOVE(&list->notifiers, notifier, node);
30025c32ffcd9f682cd761a836fe8798738d1648f2David Turner}
31025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
32025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_notify(NotifierList *list)
33025c32ffcd9f682cd761a836fe8798738d1648f2David Turner{
34025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    Notifier *notifier, *next;
35025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
36025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    QTAILQ_FOREACH_SAFE(notifier, &list->notifiers, node, next) {
37025c32ffcd9f682cd761a836fe8798738d1648f2David Turner        notifier->notify(notifier);
38025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    }
39025c32ffcd9f682cd761a836fe8798738d1648f2David Turner}
40