drivers/alarm: modify the default precision of up_perf_gettime to ns
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
This commit is contained in:
parent
79004411b4
commit
15f88804ca
1 changed files with 12 additions and 13 deletions
|
@ -36,8 +36,8 @@
|
||||||
#define CONFIG_BOARD_LOOPSPER10USEC ((CONFIG_BOARD_LOOPSPERMSEC+50)/100)
|
#define CONFIG_BOARD_LOOPSPER10USEC ((CONFIG_BOARD_LOOPSPERMSEC+50)/100)
|
||||||
#define CONFIG_BOARD_LOOPSPERUSEC ((CONFIG_BOARD_LOOPSPERMSEC+500)/1000)
|
#define CONFIG_BOARD_LOOPSPERUSEC ((CONFIG_BOARD_LOOPSPERMSEC+500)/1000)
|
||||||
|
|
||||||
#define timespec_to_usec(ts) \
|
#define timespec_to_nsec(ts) \
|
||||||
((uint64_t)(ts)->tv_sec * USEC_PER_SEC + (ts)->tv_nsec / NSEC_PER_USEC)
|
((uint64_t)(ts)->tv_sec * NSEC_PER_SEC + (ts)->tv_nsec)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Data
|
* Private Data
|
||||||
|
@ -53,12 +53,12 @@ static clock_t g_current_tick;
|
||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static inline void timespec_from_usec(FAR struct timespec *ts,
|
static inline void timespec_from_nsec(FAR struct timespec *ts,
|
||||||
uint64_t microseconds)
|
uint64_t nanoseconds)
|
||||||
{
|
{
|
||||||
ts->tv_sec = microseconds / USEC_PER_SEC;
|
ts->tv_sec = nanoseconds / NSEC_PER_SEC;
|
||||||
microseconds -= (uint64_t)ts->tv_sec * USEC_PER_SEC;
|
nanoseconds -= (uint64_t)ts->tv_sec * NSEC_PER_SEC;
|
||||||
ts->tv_nsec = microseconds * NSEC_PER_USEC;
|
ts->tv_nsec = nanoseconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void udelay_accurate(useconds_t microseconds)
|
static void udelay_accurate(useconds_t microseconds)
|
||||||
|
@ -68,7 +68,7 @@ static void udelay_accurate(useconds_t microseconds)
|
||||||
struct timespec delta;
|
struct timespec delta;
|
||||||
|
|
||||||
ONESHOT_CURRENT(g_oneshot_lower, &now);
|
ONESHOT_CURRENT(g_oneshot_lower, &now);
|
||||||
timespec_from_usec(&delta, microseconds);
|
timespec_from_nsec(&delta, (uint64_t)microseconds * NSEC_PER_USEC);
|
||||||
clock_timespec_add(&now, &delta, &end);
|
clock_timespec_add(&now, &delta, &end);
|
||||||
|
|
||||||
while (clock_timespec_compare(&now, &end) < 0)
|
while (clock_timespec_compare(&now, &end) < 0)
|
||||||
|
@ -375,7 +375,7 @@ unsigned long up_perf_gettime(void)
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
|
|
||||||
ONESHOT_CURRENT(g_oneshot_lower, &ts);
|
ONESHOT_CURRENT(g_oneshot_lower, &ts);
|
||||||
ret = timespec_to_usec(&ts);
|
ret = timespec_to_nsec(&ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -383,13 +383,12 @@ unsigned long up_perf_gettime(void)
|
||||||
|
|
||||||
unsigned long up_perf_getfreq(void)
|
unsigned long up_perf_getfreq(void)
|
||||||
{
|
{
|
||||||
return USEC_PER_SEC;
|
return NSEC_PER_SEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
void up_perf_convert(unsigned long elapsed,
|
void up_perf_convert(unsigned long elapsed, FAR struct timespec *ts)
|
||||||
FAR struct timespec *ts)
|
|
||||||
{
|
{
|
||||||
timespec_from_usec(ts, elapsed);
|
timespec_from_nsec(ts, elapsed);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ARCH_PERF_EVENTS */
|
#endif /* CONFIG_ARCH_PERF_EVENTS */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue