summaryrefslogtreecommitdiff
path: root/components/drivers/include
diff options
context:
space:
mode:
authorzhkag <[email protected]>2023-02-15 20:46:22 +0800
committerGitHub <[email protected]>2023-02-15 20:46:22 +0800
commit0f85648cfbe5aa0c0158620917a98845811fefc3 (patch)
tree3ff4413c01a1fff2ae8269368753214f5d57fb8f /components/drivers/include
parentad79e294742e2486e42c44e11619ef3b756dabf4 (diff)
Improve timer accuracy and realize (#6926)
* add cputimer frame * add cputime sleep * ctime use cputime * Processing cputime has no timeout function * Migration cputime Code * formatting file * 整理代码 * add document copyright information * 改 cputime_timer 为 cputimer * 简化 _cputimer_list 初始化 * rt_cputimer_create -> rt_cputimer_init * Remove RT_USING_CPUTIME and code cleanup. * Remove RT_USING_CPUTIME in cputimer.c * Set set_next_timeout as static function. --------- Co-authored-by: Bernard Xiong <[email protected]>
Diffstat (limited to 'components/drivers/include')
-rw-r--r--components/drivers/include/drivers/cputime.h2
-rw-r--r--components/drivers/include/drivers/cputimer.h47
2 files changed, 49 insertions, 0 deletions
diff --git a/components/drivers/include/drivers/cputime.h b/components/drivers/include/drivers/cputime.h
index 665c89fb68..bbcbe440cc 100644
--- a/components/drivers/include/drivers/cputime.h
+++ b/components/drivers/include/drivers/cputime.h
@@ -12,6 +12,7 @@
#define CPUTIME_H__
#include <stdint.h>
+#include "cputimer.h"
struct rt_clock_cputime_ops
{
@@ -23,6 +24,7 @@ struct rt_clock_cputime_ops
double clock_cpu_getres(void);
uint64_t clock_cpu_gettime(void);
int clock_cpu_settimeout(uint64_t tick, void (*timeout)(void *param), void *param);
+int clock_cpu_issettimeout(void);
uint64_t clock_cpu_microsecond(uint64_t cpu_tick);
uint64_t clock_cpu_millisecond(uint64_t cpu_tick);
diff --git a/components/drivers/include/drivers/cputimer.h b/components/drivers/include/drivers/cputimer.h
new file mode 100644
index 0000000000..f15f0c615c
--- /dev/null
+++ b/components/drivers/include/drivers/cputimer.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2006-2023, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-02-13 zhkag first version
+ */
+
+#ifndef CPUTIMER_H__
+#define CPUTIMER_H__
+
+#include <rtthread.h>
+
+struct rt_cputimer
+{
+ struct rt_object parent; /**< inherit from rt_object */
+ rt_list_t row;
+ void (*timeout_func)(void *parameter);
+ void *parameter;
+ rt_uint64_t init_tick;
+ rt_uint64_t timeout_tick;
+};
+typedef struct rt_cputimer *rt_cputimer_t;
+
+rt_err_t rt_cputimer_detach(rt_cputimer_t timer);
+
+#ifdef RT_USING_HEAP
+void rt_cputimer_init(rt_cputimer_t timer,
+ const char *name,
+ void (*timeout)(void *parameter),
+ void *parameter,
+ rt_uint64_t tick,
+ rt_uint8_t flag);
+rt_err_t rt_cputimer_delete(rt_cputimer_t timer);
+#endif
+
+rt_err_t rt_cputimer_start(rt_cputimer_t timer);
+rt_err_t rt_cputimer_stop(rt_cputimer_t timer);
+rt_err_t rt_cputimer_control(rt_cputimer_t timer, int cmd, void *arg);
+rt_err_t rt_cputime_sleep(rt_uint64_t tick);
+rt_err_t rt_cputime_ndelay(rt_uint64_t ns);
+rt_err_t rt_cputime_udelay(rt_uint64_t us);
+rt_err_t rt_cputime_mdelay(rt_uint64_t ms);
+
+#endif