From 3391a72389db2a123f8b74eec07f9c3fd71320fd Mon Sep 17 00:00:00 2001 From: latercomer Date: Wed, 29 May 2024 17:28:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3ktime=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E8=AE=A1=E7=AE=97=E6=97=B6unsigned=20long?= =?UTF-8?q?=E6=BA=A2=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .clang-format | 2 +- components/drivers/ktime/inc/ktime.h | 14 +++++++------- .../drivers/ktime/src/aarch64/cputimer.c | 10 +++++----- components/drivers/ktime/src/boottime.c | 18 +++++++++--------- components/drivers/ktime/src/cputimer.c | 8 ++++---- .../drivers/ktime/src/risc-v/virt64/cputimer.c | 10 +++++----- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.clang-format b/.clang-format index c6c8a8afeb6..aa43aae1f3d 100644 --- a/.clang-format +++ b/.clang-format @@ -23,7 +23,7 @@ AlignConsecutiveBitFields: AlignCompound: true PadOperators: true AlignConsecutiveDeclarations: - Enabled: false + Enabled: true AcrossEmptyLines: false AcrossComments: false AlignCompound: false diff --git a/components/drivers/ktime/inc/ktime.h b/components/drivers/ktime/inc/ktime.h index a1e7d65ef0d..979fcb6da18 100644 --- a/components/drivers/ktime/inc/ktime.h +++ b/components/drivers/ktime/inc/ktime.h @@ -24,7 +24,7 @@ struct rt_ktime_hrtimer { struct rt_object parent; /**< inherit from rt_object */ rt_list_t row; - void *parameter; + void *parameter; unsigned long init_cnt; unsigned long timeout_cnt; rt_err_t error; @@ -62,21 +62,21 @@ rt_err_t rt_ktime_boottime_get_ns(struct timespec *ts); * * @return (resolution * RT_KTIME_RESMUL) */ -unsigned long rt_ktime_cputimer_getres(void); +rt_uint64_t rt_ktime_cputimer_getres(void); /** * @brief Get cputimer frequency * * @return frequency */ -unsigned long rt_ktime_cputimer_getfrq(void); +rt_uint64_t rt_ktime_cputimer_getfrq(void); /** * @brief Get cputimer the value of the cnt counter * * @return cnt */ -unsigned long rt_ktime_cputimer_getcnt(void); +rt_uint64_t rt_ktime_cputimer_getcnt(void); /** * @brief Get cputimer the cnt value corresponding to 1 os tick @@ -96,21 +96,21 @@ void rt_ktime_cputimer_init(void); * * @return (resolution * RT_KTIME_RESMUL) */ -unsigned long rt_ktime_hrtimer_getres(void); +rt_uint64_t rt_ktime_hrtimer_getres(void); /** * @brief Get hrtimer frequency * * @return frequency */ -unsigned long rt_ktime_hrtimer_getfrq(void); +rt_uint64_t rt_ktime_hrtimer_getfrq(void); /** * @brief Get hrtimer the value of the cnt counter * * @return cnt */ -unsigned long rt_ktime_hrtimer_getcnt(void); +rt_uint64_t rt_ktime_hrtimer_getcnt(void); /** * @brief set hrtimer timeout, when timeout, the timer callback will call timeout diff --git a/components/drivers/ktime/src/aarch64/cputimer.c b/components/drivers/ktime/src/aarch64/cputimer.c index cc1c5255e98..09163b22918 100644 --- a/components/drivers/ktime/src/aarch64/cputimer.c +++ b/components/drivers/ktime/src/aarch64/cputimer.c @@ -11,19 +11,19 @@ #include "gtimer.h" #include "ktime.h" -static volatile unsigned long _init_cnt = 0; +static volatile rt_uint64_t _init_cnt = 0; -unsigned long rt_ktime_cputimer_getres(void) +rt_uint64_t rt_ktime_cputimer_getres(void) { - return ((1000UL * 1000 * 1000) * RT_KTIME_RESMUL) / rt_hw_get_gtimer_frq(); + return ((1000ULL * 1000 * 1000) * RT_KTIME_RESMUL) / rt_hw_get_gtimer_frq(); } -unsigned long rt_ktime_cputimer_getfrq(void) +rt_uint64_t rt_ktime_cputimer_getfrq(void) { return rt_hw_get_gtimer_frq(); } -unsigned long rt_ktime_cputimer_getcnt(void) +rt_uint64_t rt_ktime_cputimer_getcnt(void) { return rt_hw_get_cntpct_val() - _init_cnt; } diff --git a/components/drivers/ktime/src/boottime.c b/components/drivers/ktime/src/boottime.c index d380cd7e930..8e69141b68d 100644 --- a/components/drivers/ktime/src/boottime.c +++ b/components/drivers/ktime/src/boottime.c @@ -10,16 +10,16 @@ #include "ktime.h" -#define __KTIME_MUL ((1000UL * 1000 * 1000) / RT_TICK_PER_SECOND) +#define __KTIME_MUL ((1000ULL * 1000 * 1000) / RT_TICK_PER_SECOND) rt_weak rt_err_t rt_ktime_boottime_get_us(struct timeval *tv) { RT_ASSERT(tv != RT_NULL); - unsigned long ns = (rt_ktime_cputimer_getcnt() * rt_ktime_cputimer_getres()) / RT_KTIME_RESMUL; + rt_uint64_t ns = (rt_ktime_cputimer_getcnt() * rt_ktime_cputimer_getres()) / RT_KTIME_RESMUL; - tv->tv_sec = ns / (1000UL * 1000 * 1000); - tv->tv_usec = (ns % (1000UL * 1000 * 1000)) / 1000; + tv->tv_sec = ns / (1000ULL * 1000 * 1000); + tv->tv_usec = (ns % (1000ULL * 1000 * 1000)) / 1000; return RT_EOK; } @@ -28,9 +28,9 @@ rt_weak rt_err_t rt_ktime_boottime_get_s(time_t *t) { RT_ASSERT(t != RT_NULL); - unsigned long ns = (rt_ktime_cputimer_getcnt() * rt_ktime_cputimer_getres()) / RT_KTIME_RESMUL; + rt_uint64_t ns = (rt_ktime_cputimer_getcnt() * rt_ktime_cputimer_getres()) / RT_KTIME_RESMUL; - *t = ns / (1000UL * 1000 * 1000); + *t = ns / (1000ULL * 1000 * 1000); return RT_EOK; } @@ -39,10 +39,10 @@ rt_weak rt_err_t rt_ktime_boottime_get_ns(struct timespec *ts) { RT_ASSERT(ts != RT_NULL); - unsigned long ns = (rt_ktime_cputimer_getcnt() * rt_ktime_cputimer_getres()) / RT_KTIME_RESMUL; + rt_uint64_t ns = (rt_ktime_cputimer_getcnt() * rt_ktime_cputimer_getres()) / RT_KTIME_RESMUL; - ts->tv_sec = ns / (1000UL * 1000 * 1000); - ts->tv_nsec = ns % (1000UL * 1000 * 1000); + ts->tv_sec = ns / (1000ULL * 1000 * 1000); + ts->tv_nsec = ns % (1000ULL * 1000 * 1000); return RT_EOK; } diff --git a/components/drivers/ktime/src/cputimer.c b/components/drivers/ktime/src/cputimer.c index f182be894ce..c3ec9f106a7 100644 --- a/components/drivers/ktime/src/cputimer.c +++ b/components/drivers/ktime/src/cputimer.c @@ -10,17 +10,17 @@ #include "ktime.h" -rt_weak unsigned long rt_ktime_cputimer_getres(void) +rt_weak rt_uint64_t rt_ktime_cputimer_getres(void) { - return ((1000UL * 1000 * 1000) * RT_KTIME_RESMUL) / RT_TICK_PER_SECOND; + return ((1000ULL * 1000 * 1000) * RT_KTIME_RESMUL) / RT_TICK_PER_SECOND; } -rt_weak unsigned long rt_ktime_cputimer_getfrq(void) +rt_weak rt_uint64_t rt_ktime_cputimer_getfrq(void) { return RT_TICK_PER_SECOND; } -rt_weak unsigned long rt_ktime_cputimer_getcnt(void) +rt_weak rt_uint64_t rt_ktime_cputimer_getcnt(void) { return rt_tick_get(); } diff --git a/components/drivers/ktime/src/risc-v/virt64/cputimer.c b/components/drivers/ktime/src/risc-v/virt64/cputimer.c index bbc7576c5ec..301ee6d81d9 100644 --- a/components/drivers/ktime/src/risc-v/virt64/cputimer.c +++ b/components/drivers/ktime/src/risc-v/virt64/cputimer.c @@ -10,19 +10,19 @@ #include "ktime.h" -static volatile unsigned long _init_cnt = 0; +static volatile rt_uint64_t _init_cnt = 0; -unsigned long rt_ktime_cputimer_getres(void) +rt_uint64_t rt_ktime_cputimer_getres(void) { - return ((1000UL * 1000 * 1000) * RT_KTIME_RESMUL) / CPUTIME_TIMER_FREQ; + return ((1000ULL * 1000 * 1000) * RT_KTIME_RESMUL) / CPUTIME_TIMER_FREQ; } -unsigned long rt_ktime_cputimer_getfrq(void) +rt_uint64_t rt_ktime_cputimer_getfrq(void) { return CPUTIME_TIMER_FREQ; } -unsigned long rt_ktime_cputimer_getcnt(void) +rt_uint64_t rt_ktime_cputimer_getcnt(void) { unsigned long time_elapsed; __asm__ __volatile__("rdtime %0" : "=r"(time_elapsed)); From 3551640b21c87fa237dbc852baee6b13e93de395 Mon Sep 17 00:00:00 2001 From: latercomer Date: Wed, 29 May 2024 17:56:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81ktime=E4=B8=AD=E9=83=A8=E5=88=86rt?= =?UTF-8?q?=5Fuint64=5Ft=E7=B1=BB=E5=9E=8B=E7=9A=84=E4=B8=BAunsigned=20lon?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/ktime/inc/ktime.h | 10 +- .../drivers/ktime/src/aarch64/cputimer.c | 6 +- components/drivers/ktime/src/cputimer.c | 4 +- components/drivers/ktime/src/hrtimer.c | 116 +++++++++--------- .../ktime/src/risc-v/virt64/cputimer.c | 6 +- 5 files changed, 71 insertions(+), 71 deletions(-) diff --git a/components/drivers/ktime/inc/ktime.h b/components/drivers/ktime/inc/ktime.h index 979fcb6da18..2c728ece631 100644 --- a/components/drivers/ktime/inc/ktime.h +++ b/components/drivers/ktime/inc/ktime.h @@ -18,7 +18,7 @@ #include "rtthread.h" -#define RT_KTIME_RESMUL (1000000UL) +#define RT_KTIME_RESMUL (1000000ULL) struct rt_ktime_hrtimer { @@ -69,14 +69,14 @@ rt_uint64_t rt_ktime_cputimer_getres(void); * * @return frequency */ -rt_uint64_t rt_ktime_cputimer_getfrq(void); +unsigned long rt_ktime_cputimer_getfrq(void); /** * @brief Get cputimer the value of the cnt counter * * @return cnt */ -rt_uint64_t rt_ktime_cputimer_getcnt(void); +unsigned long rt_ktime_cputimer_getcnt(void); /** * @brief Get cputimer the cnt value corresponding to 1 os tick @@ -103,14 +103,14 @@ rt_uint64_t rt_ktime_hrtimer_getres(void); * * @return frequency */ -rt_uint64_t rt_ktime_hrtimer_getfrq(void); +unsigned long rt_ktime_hrtimer_getfrq(void); /** * @brief Get hrtimer the value of the cnt counter * * @return cnt */ -rt_uint64_t rt_ktime_hrtimer_getcnt(void); +unsigned long rt_ktime_hrtimer_getcnt(void); /** * @brief set hrtimer timeout, when timeout, the timer callback will call timeout diff --git a/components/drivers/ktime/src/aarch64/cputimer.c b/components/drivers/ktime/src/aarch64/cputimer.c index 09163b22918..e3b67cace7f 100644 --- a/components/drivers/ktime/src/aarch64/cputimer.c +++ b/components/drivers/ktime/src/aarch64/cputimer.c @@ -11,19 +11,19 @@ #include "gtimer.h" #include "ktime.h" -static volatile rt_uint64_t _init_cnt = 0; +static volatile unsigned long _init_cnt = 0; rt_uint64_t rt_ktime_cputimer_getres(void) { return ((1000ULL * 1000 * 1000) * RT_KTIME_RESMUL) / rt_hw_get_gtimer_frq(); } -rt_uint64_t rt_ktime_cputimer_getfrq(void) +unsigned long rt_ktime_cputimer_getfrq(void) { return rt_hw_get_gtimer_frq(); } -rt_uint64_t rt_ktime_cputimer_getcnt(void) +unsigned long rt_ktime_cputimer_getcnt(void) { return rt_hw_get_cntpct_val() - _init_cnt; } diff --git a/components/drivers/ktime/src/cputimer.c b/components/drivers/ktime/src/cputimer.c index c3ec9f106a7..cbf96a815ad 100644 --- a/components/drivers/ktime/src/cputimer.c +++ b/components/drivers/ktime/src/cputimer.c @@ -15,12 +15,12 @@ rt_weak rt_uint64_t rt_ktime_cputimer_getres(void) return ((1000ULL * 1000 * 1000) * RT_KTIME_RESMUL) / RT_TICK_PER_SECOND; } -rt_weak rt_uint64_t rt_ktime_cputimer_getfrq(void) +rt_weak unsigned long rt_ktime_cputimer_getfrq(void) { return RT_TICK_PER_SECOND; } -rt_weak rt_uint64_t rt_ktime_cputimer_getcnt(void) +rt_weak unsigned long rt_ktime_cputimer_getcnt(void) { return rt_tick_get(); } diff --git a/components/drivers/ktime/src/hrtimer.c b/components/drivers/ktime/src/hrtimer.c index 091584c836d..55963060d4e 100644 --- a/components/drivers/ktime/src/hrtimer.c +++ b/components/drivers/ktime/src/hrtimer.c @@ -25,9 +25,9 @@ static rt_list_t _timer_list = RT_LIST_OBJECT_INIT(_timer_list); static rt_ktime_hrtimer_t _nowtimer = RT_NULL; static RT_DEFINE_SPINLOCK(_spinlock); -rt_weak unsigned long rt_ktime_hrtimer_getres(void) +rt_weak rt_uint64_t rt_ktime_hrtimer_getres(void) { - return ((1000UL * 1000 * 1000) * RT_KTIME_RESMUL) / RT_TICK_PER_SECOND; + return ((1000ULL * 1000 * 1000) * RT_KTIME_RESMUL) / RT_TICK_PER_SECOND; } rt_weak unsigned long rt_ktime_hrtimer_getfrq(void) @@ -181,11 +181,11 @@ void rt_ktime_hrtimer_init(rt_ktime_hrtimer_t timer, timer->parent.flag = flag; /* set deactivated */ - timer->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED; - timer->timeout_func = timeout; - timer->parameter = parameter; - timer->timeout_cnt = cnt + rt_ktime_cputimer_getcnt(); - timer->init_cnt = cnt; + timer->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED; + timer->timeout_func = timeout; + timer->parameter = parameter; + timer->timeout_cnt = cnt + rt_ktime_cputimer_getcnt(); + timer->init_cnt = cnt; rt_list_init(&(timer->row)); rt_completion_init(&timer->completion); @@ -203,7 +203,7 @@ rt_err_t rt_ktime_hrtimer_start(rt_ktime_hrtimer_t timer) rt_list_remove(&timer->row); /* remove timer from list */ /* change status of timer */ timer->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED; - timer_list = &_timer_list; + timer_list = &_timer_list; for (; timer_list != _timer_list.prev; timer_list = timer_list->next) { rt_ktime_hrtimer_t t; @@ -259,58 +259,58 @@ rt_err_t rt_ktime_hrtimer_control(rt_ktime_hrtimer_t timer, int cmd, void *arg) level = rt_spin_lock_irqsave(&_spinlock); switch (cmd) { - case RT_TIMER_CTRL_GET_TIME: - *(unsigned long *)arg = timer->init_cnt; - break; - - case RT_TIMER_CTRL_SET_TIME: - RT_ASSERT((*(unsigned long *)arg) < (_HRTIMER_MAX_CNT / 2)); - timer->init_cnt = *(unsigned long *)arg; - timer->timeout_cnt = *(unsigned long *)arg + rt_ktime_cputimer_getcnt(); - break; - - case RT_TIMER_CTRL_SET_ONESHOT: - timer->parent.flag &= ~RT_TIMER_FLAG_PERIODIC; - break; - - case RT_TIMER_CTRL_SET_PERIODIC: - timer->parent.flag |= RT_TIMER_FLAG_PERIODIC; - break; - - case RT_TIMER_CTRL_GET_STATE: - if (timer->parent.flag & RT_TIMER_FLAG_ACTIVATED) - { - /*timer is start and run*/ - *(rt_uint32_t *)arg = RT_TIMER_FLAG_ACTIVATED; - } - else - { - /*timer is stop*/ - *(rt_uint32_t *)arg = RT_TIMER_FLAG_DEACTIVATED; - } - break; + case RT_TIMER_CTRL_GET_TIME: + *(unsigned long *)arg = timer->init_cnt; + break; + + case RT_TIMER_CTRL_SET_TIME: + RT_ASSERT((*(unsigned long *)arg) < (_HRTIMER_MAX_CNT / 2)); + timer->init_cnt = *(unsigned long *)arg; + timer->timeout_cnt = *(unsigned long *)arg + rt_ktime_cputimer_getcnt(); + break; + + case RT_TIMER_CTRL_SET_ONESHOT: + timer->parent.flag &= ~RT_TIMER_FLAG_PERIODIC; + break; + + case RT_TIMER_CTRL_SET_PERIODIC: + timer->parent.flag |= RT_TIMER_FLAG_PERIODIC; + break; + + case RT_TIMER_CTRL_GET_STATE: + if (timer->parent.flag & RT_TIMER_FLAG_ACTIVATED) + { + /*timer is start and run*/ + *(rt_uint32_t *)arg = RT_TIMER_FLAG_ACTIVATED; + } + else + { + /*timer is stop*/ + *(rt_uint32_t *)arg = RT_TIMER_FLAG_DEACTIVATED; + } + break; - case RT_TIMER_CTRL_GET_REMAIN_TIME: - *(unsigned long *)arg = timer->timeout_cnt; - break; - case RT_TIMER_CTRL_GET_FUNC: - arg = (void *)timer->timeout_func; - break; + case RT_TIMER_CTRL_GET_REMAIN_TIME: + *(unsigned long *)arg = timer->timeout_cnt; + break; + case RT_TIMER_CTRL_GET_FUNC: + arg = (void *)timer->timeout_func; + break; - case RT_TIMER_CTRL_SET_FUNC: - timer->timeout_func = (void (*)(void *))arg; - break; + case RT_TIMER_CTRL_SET_FUNC: + timer->timeout_func = (void (*)(void *))arg; + break; - case RT_TIMER_CTRL_GET_PARM: - *(void **)arg = timer->parameter; - break; + case RT_TIMER_CTRL_GET_PARM: + *(void **)arg = timer->parameter; + break; - case RT_TIMER_CTRL_SET_PARM: - timer->parameter = arg; - break; + case RT_TIMER_CTRL_SET_PARM: + timer->parameter = arg; + break; - default: - break; + default: + break; } rt_spin_unlock_irqrestore(&_spinlock, level); @@ -366,8 +366,8 @@ rt_err_t rt_ktime_hrtimer_sleep(struct rt_ktime_hrtimer *timer, unsigned long cn if (cnt == 0) return -RT_EINVAL; - timer->timeout_cnt = cnt + rt_ktime_cputimer_getcnt(); - timer->init_cnt = cnt; + timer->timeout_cnt = cnt + rt_ktime_cputimer_getcnt(); + timer->init_cnt = cnt; rt_ktime_hrtimer_start(timer); /* reset the timeout of thread timer and start it */ err = rt_completion_wait_flags(&(timer->completion), RT_WAITING_FOREVER, @@ -379,7 +379,7 @@ rt_err_t rt_ktime_hrtimer_sleep(struct rt_ktime_hrtimer *timer, unsigned long cn rt_err_t rt_ktime_hrtimer_ndelay(struct rt_ktime_hrtimer *timer, unsigned long ns) { - unsigned long res = rt_ktime_cputimer_getres(); + rt_uint64_t res = rt_ktime_cputimer_getres(); return rt_ktime_hrtimer_sleep(timer, (ns * RT_KTIME_RESMUL) / res); } diff --git a/components/drivers/ktime/src/risc-v/virt64/cputimer.c b/components/drivers/ktime/src/risc-v/virt64/cputimer.c index 301ee6d81d9..85c9c00f492 100644 --- a/components/drivers/ktime/src/risc-v/virt64/cputimer.c +++ b/components/drivers/ktime/src/risc-v/virt64/cputimer.c @@ -10,19 +10,19 @@ #include "ktime.h" -static volatile rt_uint64_t _init_cnt = 0; +static volatile unsigned long _init_cnt = 0; rt_uint64_t rt_ktime_cputimer_getres(void) { return ((1000ULL * 1000 * 1000) * RT_KTIME_RESMUL) / CPUTIME_TIMER_FREQ; } -rt_uint64_t rt_ktime_cputimer_getfrq(void) +unsigned long rt_ktime_cputimer_getfrq(void) { return CPUTIME_TIMER_FREQ; } -rt_uint64_t rt_ktime_cputimer_getcnt(void) +unsigned long rt_ktime_cputimer_getcnt(void) { unsigned long time_elapsed; __asm__ __volatile__("rdtime %0" : "=r"(time_elapsed));