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#ifndef QEMU_NOTIFY_H
15025c32ffcd9f682cd761a836fe8798738d1648f2David Turner#define QEMU_NOTIFY_H
16025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
17025c32ffcd9f682cd761a836fe8798738d1648f2David Turner#include "qemu-queue.h"
18025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
19025c32ffcd9f682cd761a836fe8798738d1648f2David Turnertypedef struct Notifier Notifier;
20025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
21025c32ffcd9f682cd761a836fe8798738d1648f2David Turnerstruct Notifier
22025c32ffcd9f682cd761a836fe8798738d1648f2David Turner{
23025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    void (*notify)(Notifier *notifier);
24025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    QTAILQ_ENTRY(Notifier) node;
25025c32ffcd9f682cd761a836fe8798738d1648f2David Turner};
26025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
27025c32ffcd9f682cd761a836fe8798738d1648f2David Turnertypedef struct NotifierList
28025c32ffcd9f682cd761a836fe8798738d1648f2David Turner{
29025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    QTAILQ_HEAD(, Notifier) notifiers;
30025c32ffcd9f682cd761a836fe8798738d1648f2David Turner} NotifierList;
31025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
32025c32ffcd9f682cd761a836fe8798738d1648f2David Turner#define NOTIFIER_LIST_INITIALIZER(head) \
33025c32ffcd9f682cd761a836fe8798738d1648f2David Turner    { QTAILQ_HEAD_INITIALIZER((head).notifiers) }
34025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
35025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_init(NotifierList *list);
36025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
37025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_add(NotifierList *list, Notifier *notifier);
38025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
39025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_remove(NotifierList *list, Notifier *notifier);
40025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
41025c32ffcd9f682cd761a836fe8798738d1648f2David Turnervoid notifier_list_notify(NotifierList *list);
42025c32ffcd9f682cd761a836fe8798738d1648f2David Turner
43025c32ffcd9f682cd761a836fe8798738d1648f2David Turner#endif
44