xref: /qemu/include/net/announce.h (revision 1f97715c8390e582f154d8b579c70779bd8c9bdf)
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