ptimer.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * General purpose implementation of a simple periodic countdown timer.
  3. *
  4. * Copyright (c) 2007 CodeSourcery.
  5. *
  6. * This code is licensed under the GNU LGPL.
  7. */
  8. #ifndef PTIMER_H
  9. #define PTIMER_H
  10. #include "qemu-common.h"
  11. #include "qemu/timer.h"
  12. #include "migration/vmstate.h"
  13. /* ptimer.c */
  14. typedef struct ptimer_state ptimer_state;
  15. typedef void (*ptimer_cb)(void *opaque);
  16. ptimer_state *ptimer_init(QEMUBH *bh);
  17. void ptimer_set_period(ptimer_state *s, int64_t period);
  18. void ptimer_set_freq(ptimer_state *s, uint32_t freq);
  19. void ptimer_set_limit(ptimer_state *s, uint64_t limit, int reload);
  20. uint64_t ptimer_get_count(ptimer_state *s);
  21. void ptimer_set_count(ptimer_state *s, uint64_t count);
  22. void ptimer_run(ptimer_state *s, int oneshot);
  23. void ptimer_stop(ptimer_state *s);
  24. extern const VMStateDescription vmstate_ptimer;
  25. #define VMSTATE_PTIMER(_field, _state) { \
  26. .name = (stringify(_field)), \
  27. .version_id = (1), \
  28. .vmsd = &vmstate_ptimer, \
  29. .size = sizeof(ptimer_state *), \
  30. .flags = VMS_STRUCT|VMS_POINTER, \
  31. .offset = vmstate_offset_pointer(_state, _field, ptimer_state), \
  32. }
  33. #endif