This is an automated email from the ASF dual-hosted git repository. ligd pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 4d283260abdda098d8ac3d93e6770068f2f7faae Author: ouyangxiangzhen <[email protected]> AuthorDate: Thu Jan 15 11:09:52 2026 +0800 sched/hrtimer: Add hrtimer_gettime. This commit added hrtimer_gettime API to support the query of the rest of the delay time of the hrtimer in nanoseconds. Signed-off-by: ouyangxiangzhen <[email protected]> --- include/nuttx/hrtimer.h | 19 ++++++++++++++ sched/hrtimer/CMakeLists.txt | 10 +++++-- sched/hrtimer/Make.defs | 1 + sched/hrtimer/hrtimer_gettime.c | 58 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 2 deletions(-) diff --git a/include/nuttx/hrtimer.h b/include/nuttx/hrtimer.h index 16db12805d1..bd8b05c2c52 100644 --- a/include/nuttx/hrtimer.h +++ b/include/nuttx/hrtimer.h @@ -199,6 +199,25 @@ int hrtimer_start(FAR hrtimer_t *hrtimer, hrtimer_entry_t func, uint64_t expired, enum hrtimer_mode_e mode); +/**************************************************************************** + * Name: hrtimer_gettime + * + * Description: + * Get the rest of the delay time of the hrtimer in nanoseconds. + * + * Input Parameters: + * timer - The hrtimer to be queried. + * + * Returned Value + * The time until next expiration in nanoseconds. + * + * Assumption: + * The timer should not be NULL. + * + ****************************************************************************/ + +uint64_t hrtimer_gettime(FAR hrtimer_t *timer); + #undef EXTERN #ifdef __cplusplus } diff --git a/sched/hrtimer/CMakeLists.txt b/sched/hrtimer/CMakeLists.txt index d7b0639dc25..83328f3ce43 100644 --- a/sched/hrtimer/CMakeLists.txt +++ b/sched/hrtimer/CMakeLists.txt @@ -23,8 +23,14 @@ # Add hrtimer-related files to the build set(CSRCS) if(CONFIG_HRTIMER) - list(APPEND CSRCS hrtimer_cancel.c hrtimer_initialize.c hrtimer_process.c - hrtimer_start.c) + list( + APPEND + CSRCS + hrtimer_cancel.c + hrtimer_initialize.c + hrtimer_process.c + hrtimer_start.c + hrtimer_gettime.c) endif() target_sources(sched PRIVATE ${CSRCS}) diff --git a/sched/hrtimer/Make.defs b/sched/hrtimer/Make.defs index 65fb6ab3161..c95a9a4dc91 100644 --- a/sched/hrtimer/Make.defs +++ b/sched/hrtimer/Make.defs @@ -24,6 +24,7 @@ ifeq ($(CONFIG_HRTIMER),y) CSRCS += hrtimer_cancel.c hrtimer_initialize.c hrtimer_process.c hrtimer_start.c + CSRCS += hrtimer_gettime.c endif # Include hrtimer build support diff --git a/sched/hrtimer/hrtimer_gettime.c b/sched/hrtimer/hrtimer_gettime.c new file mode 100644 index 00000000000..9d2b5aa3a27 --- /dev/null +++ b/sched/hrtimer/hrtimer_gettime.c @@ -0,0 +1,58 @@ +/**************************************************************************** + * sched/hrtimer/hrtimer_gettime.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> + +#include "hrtimer/hrtimer.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: hrtimer_gettime + * + * Description: + * Get the rest of the delay time of the hrtimer in nanoseconds. + * + * Input Parameters: + * timer - The hrtimer to be queried. + * + * Returned Value + * The time until next expiration in nanoseconds. + * + * Assumption: + * The timer should not be NULL. + * + ****************************************************************************/ + +uint64_t hrtimer_gettime(FAR hrtimer_t *timer) +{ + uint64_t expire = hrtimer_read_64(&timer->expired); + int64_t remain = expire - clock_systime_nsec(); + + return remain < 0 ? 0u : remain; +}
