posix-timers.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #define TIMER_RETRY 1
  3. struct k_clock {
  4. int (*clock_getres)(const clockid_t which_clock,
  5. struct timespec64 *tp);
  6. int (*clock_set)(const clockid_t which_clock,
  7. const struct timespec64 *tp);
  8. /* Returns the clock value in the current time namespace. */
  9. int (*clock_get_timespec)(const clockid_t which_clock,
  10. struct timespec64 *tp);
  11. /* Returns the clock value in the root time namespace. */
  12. ktime_t (*clock_get_ktime)(const clockid_t which_clock);
  13. int (*clock_adj)(const clockid_t which_clock, struct __kernel_timex *tx);
  14. int (*timer_create)(struct k_itimer *timer);
  15. int (*nsleep)(const clockid_t which_clock, int flags,
  16. const struct timespec64 *);
  17. int (*timer_set)(struct k_itimer *timr, int flags,
  18. struct itimerspec64 *new_setting,
  19. struct itimerspec64 *old_setting);
  20. int (*timer_del)(struct k_itimer *timr);
  21. void (*timer_get)(struct k_itimer *timr,
  22. struct itimerspec64 *cur_setting);
  23. void (*timer_rearm)(struct k_itimer *timr);
  24. s64 (*timer_forward)(struct k_itimer *timr, ktime_t now);
  25. ktime_t (*timer_remaining)(struct k_itimer *timr, ktime_t now);
  26. int (*timer_try_to_cancel)(struct k_itimer *timr);
  27. void (*timer_arm)(struct k_itimer *timr, ktime_t expires,
  28. bool absolute, bool sigev_none);
  29. void (*timer_wait_running)(struct k_itimer *timr);
  30. };
  31. extern const struct k_clock clock_posix_cpu;
  32. extern const struct k_clock clock_posix_dynamic;
  33. extern const struct k_clock clock_process;
  34. extern const struct k_clock clock_thread;
  35. extern const struct k_clock alarm_clock;
  36. int posix_timer_event(struct k_itimer *timr, int si_private);
  37. void common_timer_get(struct k_itimer *timr, struct itimerspec64 *cur_setting);
  38. int common_timer_set(struct k_itimer *timr, int flags,
  39. struct itimerspec64 *new_setting,
  40. struct itimerspec64 *old_setting);
  41. int common_timer_del(struct k_itimer *timer);