1 /** fosa_clocks_and_timers.c
8 #include <fosa_clocks_and_timers.h>
10 /*************************
12 *************************/
13 int fosa_clock_get_time(fosa_clock_id_t clockid, struct timespec *current_time)
15 if (clock_gettime (clockid, current_time))
23 int fosa_thread_get_cputime_clock(frsh_thread_id_t tid, fosa_clock_id_t *clockid)
25 // if (tid == thread_invalid)
26 // return FOSA_EINVAL;
28 *clockid = CLOCK_THREAD_CPUTIME_ID;
32 /*************************
34 *************************/
36 (fosa_clock_id_t clockid, frsh_signal_t signal, frsh_signal_info_t info,
37 fosa_timer_id_t *timerid);
39 int fosa_timer_delete(fosa_timer_id_t timerid)
41 if (timer_delete (timerid))
48 (fosa_timer_id_t timerid, bool abstime,
49 const struct timespec *value)
51 struct itimerspec value =
53 .it_value = (struct timespec) *value,
57 if (timer_settime (timerid, abstime, &value, NULL))
64 // TODO: CPU-clock ???
65 int fosa_timer_get_remaining_time
66 (fosa_timer_id_t timerid, struct timespec *remaining_time)
68 struct itimerspec value;
70 if (timer_gettime (timerid, &value))
73 *remaining_time = value.it_value;
77 int fosa_timer_disarm(fosa_timer_id_t timerid, struct timespec
80 struct itimerspec null_timer, old;
82 // NULL timer -> disarm
83 value = (struct itimerspec) {
88 if (timer_settime (timerid, 0, &null_timer, &old))
92 *remaining_time = old.it_value;