aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/alarmtimer.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/time/alarmtimer.c')
-rw-r--r--kernel/time/alarmtimer.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
index 4aec4a457431..b4bce62e47b2 100644
--- a/kernel/time/alarmtimer.c
+++ b/kernel/time/alarmtimer.c
@@ -541,18 +541,22 @@ static int alarm_timer_create(struct k_itimer *new_timer)
541 * @new_timer: k_itimer pointer 541 * @new_timer: k_itimer pointer
542 * @cur_setting: itimerspec data to fill 542 * @cur_setting: itimerspec data to fill
543 * 543 *
544 * Copies the itimerspec data out from the k_itimer 544 * Copies out the current itimerspec data
545 */ 545 */
546static void alarm_timer_get(struct k_itimer *timr, 546static void alarm_timer_get(struct k_itimer *timr,
547 struct itimerspec *cur_setting) 547 struct itimerspec *cur_setting)
548{ 548{
549 memset(cur_setting, 0, sizeof(struct itimerspec)); 549 ktime_t relative_expiry_time =
550 alarm_expires_remaining(&(timr->it.alarm.alarmtimer));
550 551
551 cur_setting->it_interval = 552 if (ktime_to_ns(relative_expiry_time) > 0) {
552 ktime_to_timespec(timr->it.alarm.interval); 553 cur_setting->it_value = ktime_to_timespec(relative_expiry_time);
553 cur_setting->it_value = 554 } else {
554 ktime_to_timespec(timr->it.alarm.alarmtimer.node.expires); 555 cur_setting->it_value.tv_sec = 0;
555 return; 556 cur_setting->it_value.tv_nsec = 0;
557 }
558
559 cur_setting->it_interval = ktime_to_timespec(timr->it.alarm.interval);
556} 560}
557 561
558/** 562/**