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