Skip to content

Commit 4d63921

Browse files
hujun260xiaoxiang781216
authored andcommitted
use atomic operation for g_system_ticks
Signed-off-by: hujun5 <[email protected]>
1 parent bbaf1ff commit 4d63921

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

sched/clock/clock_initialize.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,14 @@ void clock_resynchronize(FAR struct timespec *rtc_diff)
373373

374374
/* Add the sleep time to correct system timer */
375375

376-
g_system_ticks += SEC2TICK(rtc_diff->tv_sec);
377-
g_system_ticks += NSEC2TICK(rtc_diff->tv_nsec);
376+
clock_t diff_ticks = SEC2TICK(rtc_diff->tv_sec) +
377+
NSEC2TICK(rtc_diff->tv_nsec);
378+
379+
#ifdef CONFIG_SYSTEM_TIME64
380+
atomic64_fetch_add((FAR atomic64_t *)&g_system_ticks, diff_ticks);
381+
#else
382+
atomic_fetch_add((FAR atomic_t *)&g_system_ticks, diff_ticks);
383+
#endif
378384
}
379385

380386
skip:
@@ -398,6 +404,10 @@ void clock_timer(void)
398404
{
399405
/* Increment the per-tick system counter */
400406

401-
g_system_ticks++;
407+
#ifdef CONFIG_SYSTEM_TIME64
408+
atomic64_fetch_add((FAR atomic64_t *)&g_system_ticks, 1);
409+
#else
410+
atomic_fetch_add((FAR atomic_t *)&g_system_ticks, 1);
411+
#endif
402412
}
403413
#endif

0 commit comments

Comments
 (0)