diff --git a/components/drivers/cputime/cputime.c b/components/drivers/cputime/cputime.c index 22b56e6db25534ebb34bf197b86965a66e65c6c2..b39e789cd2a42287f2c7624da86f28812277cacf 100644 --- a/components/drivers/cputime/cputime.c +++ b/components/drivers/cputime/cputime.c @@ -43,6 +43,24 @@ uint64_t clock_cpu_gettime(void) return 0; } +/** + * The clock_cpu_settimeout() fucntion set timeout time and timeout callback function + * The timeout callback function will be called when the timeout time is reached + * + * @param tick the Timeout tick + * @param timeout the Timeout function + * @param parameter the Parameters of timeout function + * + */ +void clock_cpu_settimeout(uint64_t tick, void (*timeout)(void *param), void *param) +{ + if (_cputime_ops) + return _cputime_ops->cputime_settimeout(tick, timeout, param); + + rt_set_errno(ENOSYS); + return 0; +} + /** * The clock_cpu_microsecond() fucntion shall return the microsecond according to * cpu_tick parameter. diff --git a/components/drivers/include/drivers/cputime.h b/components/drivers/include/drivers/cputime.h index 8fce901c6a1fee38c8121109ef3bb8d450326cfd..2547ffa42ef1917da5577bb08e800a0b3bbf7bf8 100644 --- a/components/drivers/include/drivers/cputime.h +++ b/components/drivers/include/drivers/cputime.h @@ -17,10 +17,12 @@ struct rt_clock_cputime_ops { double (*cputime_getres)(void); uint64_t (*cputime_gettime)(void); + void (*cputime_settimeout)(uint64_t tick, void (*timeout)(void *param), void *param); }; double clock_cpu_getres(void); uint64_t clock_cpu_gettime(void); +void clock_cpu_settimeout(uint64_t tick, void (*timeout)(void *param), void *param); uint64_t clock_cpu_microsecond(uint64_t cpu_tick); uint64_t clock_cpu_millisecond(uint64_t cpu_tick);