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;
+}

Reply via email to