mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-21 10:36:04 +08:00
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 <bernard.xiong@gmail.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user