blob: 54fc57cec193b3a5b7a2412bd64faa8fef965b3d [file] [log] [blame]
Anthony Liguorid1e70c52010-03-09 13:16:14 -06001/*
2 * Notifier lists
3 *
4 * Copyright IBM, Corp. 2010
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *
9 * This work is licensed under the terms of the GNU GPL, version 2. See
10 * the COPYING file in the top-level directory.
11 *
12 */
13
14#ifndef QEMU_NOTIFY_H
15#define QEMU_NOTIFY_H
16
17#include "qemu-queue.h"
18
19typedef struct Notifier Notifier;
20
21struct Notifier
22{
Jan Kiszka9e8dd452011-06-20 14:06:26 +020023 void (*notify)(Notifier *notifier, void *data);
Anthony Liguorid1e70c52010-03-09 13:16:14 -060024 QTAILQ_ENTRY(Notifier) node;
25};
26
27typedef struct NotifierList
28{
29 QTAILQ_HEAD(, Notifier) notifiers;
30} NotifierList;
31
32#define NOTIFIER_LIST_INITIALIZER(head) \
33 { QTAILQ_HEAD_INITIALIZER((head).notifiers) }
34
35void notifier_list_init(NotifierList *list);
36
37void notifier_list_add(NotifierList *list, Notifier *notifier);
38
39void notifier_list_remove(NotifierList *list, Notifier *notifier);
40
Jan Kiszka9e8dd452011-06-20 14:06:26 +020041void notifier_list_notify(NotifierList *list, void *data);
Anthony Liguorid1e70c52010-03-09 13:16:14 -060042
43#endif