A clone of btpd with my configuration changes.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

59 рядки
1.1 KiB

  1. #ifndef BTPD_EVLOOP_H
  2. #define BTPD_EVLOOP_H
  3. #include <sys/time.h>
  4. #include <stdint.h>
  5. #include "timeheap.h"
  6. #define EV_READ 1
  7. #define EV_WRITE 2
  8. #define EV_TIMEOUT 3
  9. typedef void (*evloop_cb_t)(int fd, short type, void *arg);
  10. #if defined(EVLOOP_EPOLL) || defined(EVLOOP_KQUEUE)
  11. struct fdev {
  12. evloop_cb_t cb;
  13. void *arg;
  14. int fd;
  15. uint16_t flags;
  16. int16_t index;
  17. };
  18. #elif defined(EVLOOP_POLL)
  19. struct fdev {
  20. int i;
  21. };
  22. #else
  23. #error No evloop method defined.
  24. #endif
  25. struct timeout {
  26. evloop_cb_t cb;
  27. void *arg;
  28. struct th_handle th;
  29. };
  30. int evloop_init(void);
  31. int evloop(void);
  32. int fdev_new(struct fdev *ev, int fd, uint16_t flags, evloop_cb_t cb,
  33. void *arg);
  34. int fdev_del(struct fdev *ev);
  35. int fdev_enable(struct fdev *ev, uint16_t flags);
  36. int fdev_disable(struct fdev *ev, uint16_t flags);
  37. void evtimer_init(struct timeout *, evloop_cb_t, void *);
  38. int evtimer_add(struct timeout *, struct timespec *);
  39. void evtimer_del(struct timeout *);
  40. void evtimers_run(void);
  41. struct timespec evtimer_delay(void);
  42. int evtimer_gettime(struct timespec *);
  43. #endif