sched.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /** @file event.h
  2. * @brief Public interface for event schedule functions.
  3. */
  4. #ifndef _faux_sched_h
  5. #define _faux_sched_h
  6. #include <faux/list.h>
  7. #include <faux/faux.h>
  8. #include <faux/time.h>
  9. #define FAUX_SCHED_NOW NULL
  10. #define FAUX_SCHED_INFINITE (unsigned int)(-1l)
  11. typedef enum {
  12. FAUX_SCHED_PERIODIC = BOOL_TRUE,
  13. FAUX_SCHED_ONCE = BOOL_FALSE
  14. } faux_sched_periodic_t;
  15. typedef struct faux_ev_s faux_ev_t;
  16. typedef struct faux_sched_s faux_sched_t;
  17. typedef faux_list_node_t faux_sched_node_t;
  18. C_DECL_BEGIN
  19. faux_sched_t *faux_sched_new(void);
  20. void faux_sched_free(faux_sched_t *sched);
  21. int faux_sched_once(
  22. faux_sched_t *sched, const struct timespec *time, int ev_id, void *data);
  23. int faux_sched_once_delayed(faux_sched_t *sched,
  24. const struct timespec *interval, int ev_id, void *data);
  25. int faux_sched_periodic(
  26. faux_sched_t *sched, const struct timespec *time, int ev_id, void *data,
  27. const struct timespec *period, unsigned int cycle_num);
  28. int faux_sched_periodic_delayed(
  29. faux_sched_t *sched, int ev_id, void *data,
  30. const struct timespec *period, unsigned int cycle_num);
  31. int faux_sched_next_interval(faux_sched_t *sched, struct timespec *interval);
  32. void faux_sched_empty(faux_sched_t *sched);
  33. int faux_sched_pop(faux_sched_t *sched, int *ev_id, void **data);
  34. int faux_sched_remove_by_id(faux_sched_t *sched, int id);
  35. int faux_sched_remove_by_data(faux_sched_t *sched, void *data);
  36. const struct timespec *faux_sched_time_by_data(faux_sched_t *sched, void *data);
  37. C_DECL_END
  38. #endif /* _faux_sched_h */