diff options
Diffstat (limited to 'kernel/time/alarmtimer.c')
-rw-r--r-- | kernel/time/alarmtimer.c | 18 |
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 | */ |
546 | static void alarm_timer_get(struct k_itimer *timr, | 546 | static 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 | /** |