Skip to content

Commit

Permalink
sched/clock/clock_initialize.c: clock_inittime() needs to be done wit…
Browse files Browse the repository at this point in the history
…h CONFIG_SCHED_TICKLESS and clock_initialize should skip clock_inittime() for external RTC case since the RTC isn't ready yet.
  • Loading branch information
xiaoxiang781216 authored and gregory-nutt committed Nov 12, 2018
1 parent f0c5c75 commit 2bc709d
Showing 1 changed file with 15 additions and 21 deletions.
36 changes: 15 additions & 21 deletions sched/clock/clock_initialize.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@

#ifndef CONFIG_SCHED_TICKLESS
#ifdef CONFIG_SYSTEM_TIME64
volatile uint64_t g_system_timer;
volatile uint64_t g_system_timer = INITIAL_SYSTEM_TIMER_TICKS;
#else
volatile uint32_t g_system_timer;
volatile uint32_t g_system_timer = INITIAL_SYSTEM_TIMER_TICKS;
#endif
#endif

Expand Down Expand Up @@ -170,37 +170,31 @@ static inline int clock_basetime(FAR struct timespec *tp)
*
****************************************************************************/

#ifdef CONFIG_RTC
static void clock_inittime(void)
{
/* (Re-)initialize the time value to match the RTC */

#ifndef CONFIG_CLOCK_TIMEKEEPING
#ifndef CONFIG_RTC_HIRES
clock_basetime(&g_basetime);
#endif
#ifndef CONFIG_SCHED_TICKLESS
g_system_timer = INITIAL_SYSTEM_TIMER_TICKS;
if (g_system_timer > 0)
{
struct timespec ts;
struct timespec ts;

(void)clock_ticks2time((sclock_t)g_system_timer, &ts);
clock_basetime(&g_basetime);
clock_systimespec(&ts);

/* Adjust base time to hide initial timer ticks. */
/* Adjust base time to hide initial timer ticks. */

g_basetime.tv_sec -= ts.tv_sec;
g_basetime.tv_nsec -= ts.tv_nsec;
while (g_basetime.tv_nsec < 0)
{
g_basetime.tv_nsec += NSEC_PER_SEC;
g_basetime.tv_sec--;
}
g_basetime.tv_sec -= ts.tv_sec;
g_basetime.tv_nsec -= ts.tv_nsec;
while (g_basetime.tv_nsec < 0)
{
g_basetime.tv_nsec += NSEC_PER_SEC;
g_basetime.tv_sec--;
}
#endif /* !CONFIG_SCHED_TICKLESS */
#else
clock_inittimekeeping();
#endif
}
#endif

/****************************************************************************
* Public Functions
Expand All @@ -222,11 +216,11 @@ void clock_initialize(void)
*/

up_rtc_initialize();
#endif

/* Initialize the time value to match the RTC */

clock_inittime();
#endif
}

/****************************************************************************
Expand Down

0 comments on commit 2bc709d

Please sign in to comment.