xref: /openbmc/qemu/include/net/announce.h (revision 1935b7ea)
1 /*
2  *  Self-announce facility
3  *  (c) 2017-2019 Red Hat, Inc.
4  *
5  * This work is licensed under the terms of the GNU GPL, version 2 or later.
6  * See the COPYING file in the top-level directory.
7  */
8 
9 #ifndef QEMU_NET_ANNOUNCE_H
10 #define QEMU_NET_ANNOUNCE_H
11 
12 #include "qapi/qapi-types-net.h"
13 #include "qemu/timer.h"
14 
15 typedef struct AnnounceTimer {
16     QEMUTimer *tm;
17     AnnounceParameters params;
18     QEMUClockType type;
19     int round;
20 } AnnounceTimer;
21 
22 /* Returns: update the timer to the next time point */
23 int64_t qemu_announce_timer_step(AnnounceTimer *timer);
24 
25 /*
26  * Delete the underlying timer and other data
27  * If 'free_named' true and the timer is a named timer, then remove
28  * it from the list of named timers and free the AnnounceTimer itself.
29  */
30 void qemu_announce_timer_del(AnnounceTimer *timer, bool free_named);
31 
32 /*
33  * Under BQL/main thread
34  * Reset the timer to the given parameters/type/notifier.
35  */
36 void qemu_announce_timer_reset(AnnounceTimer *timer,
37                                AnnounceParameters *params,
38                                QEMUClockType type,
39                                QEMUTimerCB *cb,
40                                void *opaque);
41 
42 void qemu_announce_self(AnnounceTimer *timer, AnnounceParameters *params);
43 
44 #endif
45