1 /* 2 * Copyright (c) 2006-2023, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2023-02-13 zhkag first version 9 */ 10 11 #ifndef CPUTIMER_H__ 12 #define CPUTIMER_H__ 13 14 #include <rtthread.h> 15 16 struct rt_cputimer 17 { 18 struct rt_object parent; /**< inherit from rt_object */ 19 rt_list_t row; 20 void (*timeout_func)(void *parameter); 21 void *parameter; 22 rt_uint64_t init_tick; 23 rt_uint64_t timeout_tick; 24 struct rt_semaphore sem; 25 }; 26 typedef struct rt_cputimer *rt_cputimer_t; 27 28 rt_err_t rt_cputimer_detach(rt_cputimer_t timer); 29 30 #ifdef RT_USING_HEAP 31 void rt_cputimer_init(rt_cputimer_t timer, 32 const char *name, 33 void (*timeout)(void *parameter), 34 void *parameter, 35 rt_uint64_t tick, 36 rt_uint8_t flag); 37 rt_err_t rt_cputimer_delete(rt_cputimer_t timer); 38 #endif 39 40 rt_err_t rt_cputimer_start(rt_cputimer_t timer); 41 rt_err_t rt_cputimer_stop(rt_cputimer_t timer); 42 rt_err_t rt_cputimer_control(rt_cputimer_t timer, int cmd, void *arg); 43 rt_err_t rt_cputime_sleep(rt_uint64_t tick); 44 rt_err_t rt_cputime_ndelay(rt_uint64_t ns); 45 rt_err_t rt_cputime_udelay(rt_uint64_t us); 46 rt_err_t rt_cputime_mdelay(rt_uint64_t ms); 47 48 #endif 49