You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by li...@apache.org on 2026/01/26 08:37:22 UTC
(nuttx) 06/11: sched/hrtimer: Add hrtimer_gettime.
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 <ou...@xiaomi.com>
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 <ou...@xiaomi.com>
---
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;
+}