mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 07:12:54 +08:00
yslog: use monotonic clock for timestamp when available
This commit is contained in:
committed by
Gregory Nutt
parent
2f9028b547
commit
e835803166
@@ -1,7 +1,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* drivers/syslog/vsyslog.c
|
* drivers/syslog/vsyslog.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2009, 2011-2014, 2016 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007-2009, 2011-2014, 2016-2017 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -70,15 +70,29 @@ int _vsyslog(int priority, FAR const IPTR char *fmt, FAR va_list *ap)
|
|||||||
struct lib_outstream_s stream;
|
struct lib_outstream_s stream;
|
||||||
#ifdef CONFIG_SYSLOG_TIMESTAMP
|
#ifdef CONFIG_SYSLOG_TIMESTAMP
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
/* Get the current time. Since debug output may be generated very early
|
/* Get the current time. Since debug output may be generated very early
|
||||||
* in the start-up sequence, hardware timer support may not yet be
|
* in the start-up sequence, hardware timer support may not yet be
|
||||||
* available.
|
* available.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!OSINIT_HW_READY() || clock_systimespec(&ts) < 0)
|
if (OSINIT_HW_READY())
|
||||||
{
|
{
|
||||||
/* Timer hardware is not available, or clock_systimespec failed */
|
/* Prefer monotonic when enabled, as it can be synchronized to
|
||||||
|
* RTC with clock_resynchronize.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_CLOCK_MONOTONIC
|
||||||
|
ret = clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||||
|
#else
|
||||||
|
ret = clock_systimespec(&ts);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
/* Timer hardware is not available, or clock function failed */
|
||||||
|
|
||||||
ts.tv_sec = 0;
|
ts.tv_sec = 0;
|
||||||
ts.tv_nsec = 0;
|
ts.tv_nsec = 0;
|
||||||
|
|||||||
@@ -68,7 +68,8 @@
|
|||||||
#define SEC_PER_HOUR ((time_t)60 * SEC_PER_MIN)
|
#define SEC_PER_HOUR ((time_t)60 * SEC_PER_MIN)
|
||||||
#define SEC_PER_DAY ((time_t)24 * SEC_PER_HOUR)
|
#define SEC_PER_DAY ((time_t)24 * SEC_PER_HOUR)
|
||||||
|
|
||||||
#if defined(CONFIG_DEBUG_FEATURES) && defined(CONFIG_SYSTEM_TIME64)
|
#if defined(CONFIG_DEBUG_FEATURES) && defined(CONFIG_SYSTEM_TIME64) && \
|
||||||
|
defined(CONFIG_CLOCK_MONOTONIC)
|
||||||
/* Initial system timer ticks value close to maximum 32-bit value, to test
|
/* Initial system timer ticks value close to maximum 32-bit value, to test
|
||||||
* 64-bit system-timer after going over 32-bit value. This is to make errors
|
* 64-bit system-timer after going over 32-bit value. This is to make errors
|
||||||
* of casting 64-bit system-timer to 32-bit variables more visible.
|
* of casting 64-bit system-timer to 32-bit variables more visible.
|
||||||
|
|||||||
Reference in New Issue
Block a user