xref: /qemu/include/net/announce.h (revision 2d3f4096)
150510ea2SDr. David Alan Gilbert /*
250510ea2SDr. David Alan Gilbert  *  Self-announce facility
350510ea2SDr. David Alan Gilbert  *  (c) 2017-2019 Red Hat, Inc.
450510ea2SDr. David Alan Gilbert  *
550510ea2SDr. David Alan Gilbert  * This work is licensed under the terms of the GNU GPL, version 2 or later.
650510ea2SDr. David Alan Gilbert  * See the COPYING file in the top-level directory.
750510ea2SDr. David Alan Gilbert  */
850510ea2SDr. David Alan Gilbert 
950510ea2SDr. David Alan Gilbert #ifndef QEMU_NET_ANNOUNCE_H
1050510ea2SDr. David Alan Gilbert #define QEMU_NET_ANNOUNCE_H
1150510ea2SDr. David Alan Gilbert 
1250510ea2SDr. David Alan Gilbert #include "qapi/qapi-types-net.h"
1350510ea2SDr. David Alan Gilbert #include "qemu/timer.h"
1450510ea2SDr. David Alan Gilbert 
152d3f4096SPaolo Bonzini typedef struct AnnounceTimer {
1650510ea2SDr. David Alan Gilbert     QEMUTimer *tm;
1750510ea2SDr. David Alan Gilbert     AnnounceParameters params;
1850510ea2SDr. David Alan Gilbert     QEMUClockType type;
1950510ea2SDr. David Alan Gilbert     int round;
202d3f4096SPaolo Bonzini } AnnounceTimer;
2150510ea2SDr. David Alan Gilbert 
2250510ea2SDr. David Alan Gilbert /* Returns: update the timer to the next time point */
2350510ea2SDr. David Alan Gilbert int64_t qemu_announce_timer_step(AnnounceTimer *timer);
2450510ea2SDr. David Alan Gilbert 
25944458b6SDr. David Alan Gilbert /*
26944458b6SDr. David Alan Gilbert  * Delete the underlying timer and other data
27944458b6SDr. David Alan Gilbert  * If 'free_named' true and the timer is a named timer, then remove
28944458b6SDr. David Alan Gilbert  * it from the list of named timers and free the AnnounceTimer itself.
29944458b6SDr. David Alan Gilbert  */
30944458b6SDr. David Alan Gilbert void qemu_announce_timer_del(AnnounceTimer *timer, bool free_named);
3150510ea2SDr. David Alan Gilbert 
3250510ea2SDr. David Alan Gilbert /*
3350510ea2SDr. David Alan Gilbert  * Under BQL/main thread
3450510ea2SDr. David Alan Gilbert  * Reset the timer to the given parameters/type/notifier.
3550510ea2SDr. David Alan Gilbert  */
3650510ea2SDr. David Alan Gilbert void qemu_announce_timer_reset(AnnounceTimer *timer,
3750510ea2SDr. David Alan Gilbert                                AnnounceParameters *params,
3850510ea2SDr. David Alan Gilbert                                QEMUClockType type,
3950510ea2SDr. David Alan Gilbert                                QEMUTimerCB *cb,
4050510ea2SDr. David Alan Gilbert                                void *opaque);
4150510ea2SDr. David Alan Gilbert 
427659505cSDr. David Alan Gilbert void qemu_announce_self(AnnounceTimer *timer, AnnounceParameters *params);
437659505cSDr. David Alan Gilbert 
4450510ea2SDr. David Alan Gilbert #endif
45