diff options
| author | zhkag <[email protected]> | 2023-02-15 20:46:22 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-02-15 20:46:22 +0800 |
| commit | 0f85648cfbe5aa0c0158620917a98845811fefc3 (patch) | |
| tree | 3ff4413c01a1fff2ae8269368753214f5d57fb8f /components/drivers/include | |
| parent | ad79e294742e2486e42c44e11619ef3b756dabf4 (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.h | 2 | ||||
| -rw-r--r-- | components/drivers/include/drivers/cputimer.h | 47 |
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 |
