Lines Matching refs:timer

43 	struct timer_obj *timer;  in zephyr_timer_wrapper()  local
45 timer = (struct timer_obj *)ztimer; in zephyr_timer_wrapper()
47 if (timer->reload == 0U) { in zephyr_timer_wrapper()
48 timer->status = NOT_ACTIVE; in zephyr_timer_wrapper()
49 LOG_DBG("timer %p not active", timer); in zephyr_timer_wrapper()
52 if (timer->evp.sigev_notify == SIGEV_NONE) { in zephyr_timer_wrapper()
57 if (timer->evp.sigev_notify_function == NULL) { in zephyr_timer_wrapper()
62 LOG_DBG("calling sigev_notify_function %p", timer->evp.sigev_notify_function); in zephyr_timer_wrapper()
63 (timer->evp.sigev_notify_function)(timer->evp.sigev_value); in zephyr_timer_wrapper()
69 struct timer_obj *timer = (struct timer_obj *)arg; in zephyr_thread_wrapper() local
74 if (timer->evp.sigev_notify_attributes == NULL) { in zephyr_thread_wrapper()
80 if (timer->reload == 0U) { in zephyr_thread_wrapper()
81 timer->status = NOT_ACTIVE; in zephyr_thread_wrapper()
82 LOG_DBG("timer %p not active", timer); in zephyr_thread_wrapper()
85 ret = k_sem_take(&timer->sem_cond, K_FOREVER); in zephyr_thread_wrapper()
88 if (timer->evp.sigev_notify_function == NULL) { in zephyr_thread_wrapper()
93 LOG_DBG("calling sigev_notify_function %p", timer->evp.sigev_notify_function); in zephyr_thread_wrapper()
94 (timer->evp.sigev_notify_function)(timer->evp.sigev_value); in zephyr_thread_wrapper()
102 struct timer_obj *timer; in zephyr_timer_interrupt() local
104 timer = (struct timer_obj *)ztimer; in zephyr_timer_interrupt()
105 k_sem_give(&timer->sem_cond); in zephyr_timer_interrupt()
120 struct timer_obj *timer; in timer_create() local
128 if (k_mem_slab_alloc(&posix_timer_slab, (void **)&timer, alloc_timeout) != 0) { in timer_create()
134 *timer = (struct timer_obj){0}; in timer_create()
135 timer->evp = *evp; in timer_create()
136 evp = &timer->evp; in timer_create()
140 k_timer_init(&timer->ztimer, NULL, NULL); in timer_create()
143 k_timer_init(&timer->ztimer, zephyr_timer_wrapper, NULL); in timer_create()
168 ret = k_sem_init(&timer->sem_cond, 0, 1); in timer_create()
176 ret = pthread_create(&timer->thread, evp->sigev_notify_attributes, in timer_create()
177 zephyr_thread_wrapper, timer); in timer_create()
185 k_timer_init(&timer->ztimer, zephyr_timer_interrupt, NULL); in timer_create()
193 *timerid = (timer_t)timer; in timer_create()
197 k_mem_slab_free(&posix_timer_slab, (void *)timer); in timer_create()
210 struct timer_obj *timer = (struct timer_obj *)timerid; in timer_gettime() local
214 if (timer == NULL) { in timer_gettime()
219 if (timer->status == ACTIVE) { in timer_gettime()
220 remaining = k_timer_remaining_get(&timer->ztimer); in timer_gettime()
233 its->it_interval = timer->interval; in timer_gettime()
245 struct timer_obj *timer = (struct timer_obj *) timerid; in timer_settime() local
248 if ((timer == NULL) || !timespec_is_valid(&value->it_interval) || in timer_settime()
261 if (timer->status == ACTIVE) { in timer_settime()
262 k_timer_stop(&timer->ztimer); in timer_settime()
265 timer->status = NOT_ACTIVE; in timer_settime()
270 timer->reload = ts_to_ms(&value->it_interval); in timer_settime()
271 timer->interval.tv_sec = value->it_interval.tv_sec; in timer_settime()
272 timer->interval.tv_nsec = value->it_interval.tv_nsec; in timer_settime()
277 current = k_timer_remaining_get(&timer->ztimer); in timer_settime()
286 if (timer->status == ACTIVE) { in timer_settime()
287 k_timer_stop(&timer->ztimer); in timer_settime()
290 timer->status = ACTIVE; in timer_settime()
291 k_timer_start(&timer->ztimer, K_MSEC(duration), K_MSEC(timer->reload)); in timer_settime()
302 struct timer_obj *timer = (struct timer_obj *) timerid; in timer_getoverrun() local
304 if (timer == NULL) { in timer_getoverrun()
309 int overruns = k_timer_status_get(&timer->ztimer) - 1; in timer_getoverrun()
325 struct timer_obj *timer = (struct timer_obj *) timerid; in timer_delete() local
327 if (timer == NULL) { in timer_delete()
332 if (timer->status == ACTIVE) { in timer_delete()
333 timer->status = NOT_ACTIVE; in timer_delete()
334 k_timer_stop(&timer->ztimer); in timer_delete()
337 if (timer->evp.sigev_notify == SIGEV_THREAD) { in timer_delete()
338 (void)pthread_cancel(timer->thread); in timer_delete()
341 k_mem_slab_free(&posix_timer_slab, (void *)timer); in timer_delete()