diff options
Diffstat (limited to 'kernel')
| -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 | /** |
