summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-30 06:27:51 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-30 09:51:19 +0200
commit729cf694e863c88fe0f27ed135c1721fff4c266f (patch)
tree97db9e4f24a79e93ca328b488b59c8948cf2c69b /c
parentscore: Strong APA scheduler processor allocation (diff)
downloadrtems-729cf694e863c88fe0f27ed135c1721fff4c266f.tar.bz2
bsps: Do not use fast idle clock for SMP
We may have more than one idle thread. Thus, the clock driver fast idle logic would be a bit more complicated.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/shared/clockdrv_shell.h28
1 files changed, 15 insertions, 13 deletions
diff --git a/c/src/lib/libbsp/shared/clockdrv_shell.h b/c/src/lib/libbsp/shared/clockdrv_shell.h
index 6609f5ea9b..47658732b4 100644
--- a/c/src/lib/libbsp/shared/clockdrv_shell.h
+++ b/c/src/lib/libbsp/shared/clockdrv_shell.h
@@ -137,19 +137,21 @@ rtems_isr Clock_isr(
Clock_driver_timecounter_tick();
- while (
- _Thread_Heir == _Thread_Executing
- && _Thread_Executing->Start.Entry.Kinds.Idle.entry
- == rtems_configuration_get_idle_task()
- ) {
- ISR_lock_Context lock_context;
-
- _Timecounter_Acquire(&lock_context);
- _Timecounter_Tick_simple(
- interval,
- (*tc->tc_get_timecount)(tc),
- &lock_context
- );
+ if (!rtems_configuration_is_smp_enabled()) {
+ while (
+ _Thread_Heir == _Thread_Executing
+ && _Thread_Executing->Start.Entry.Kinds.Idle.entry
+ == rtems_configuration_get_idle_task()
+ ) {
+ ISR_lock_Context lock_context;
+
+ _Timecounter_Acquire(&lock_context);
+ _Timecounter_Tick_simple(
+ interval,
+ (*tc->tc_get_timecount)(tc),
+ &lock_context
+ );
+ }
}
Clock_driver_support_at_tick();