28 #ifdef Clock_driver_nanoseconds_since_last_tick    29 #error "Update driver to use the timecounter instead of nanoseconds extension"    40 #if CLOCK_DRIVER_USE_FAST_IDLE && CLOCK_DRIVER_ISRS_PER_TICK    41 #error "Fast Idle PLUS n ISRs per tick is not supported"    47 #ifndef Clock_driver_support_install_isr    48   #define Clock_driver_support_install_isr(isr)    54 #ifndef Clock_driver_support_find_timer    55   #define Clock_driver_support_find_timer()    61 #ifndef Clock_driver_support_at_tick    62   #define Clock_driver_support_at_tick()    68 #ifndef Clock_driver_support_set_interrupt_affinity    69   #define Clock_driver_support_set_interrupt_affinity(online_processors)    76 #ifndef Clock_driver_timecounter_tick    77 static void Clock_driver_timecounter_tick( 
void )
    79 #if defined(CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER)    81 #elif defined(RTEMS_SMP) && defined(CLOCK_DRIVER_USE_ONLY_BOOT_PROCESSOR)    85   cpu_max = _SMP_Get_processor_maximum();
    87   for ( cpu_index = 0 ; cpu_index < cpu_max ; ++cpu_index ) {
    90     cpu = _Per_CPU_Get_by_index( cpu_index );
    92     if ( _Per_CPU_Is_boot_processor( cpu ) ) {
   107 #if CLOCK_DRIVER_ISRS_PER_TICK   108   volatile uint32_t  Clock_driver_isrs;
   116 #ifdef Clock_driver_support_shutdown_hardware   117 #error "Clock_driver_support_shutdown_hardware() is no longer supported"   127 #if defined(BSP_FEATURE_IRQ_EXTENSION) || \   128     (CPU_SIMPLE_VECTORED_INTERRUPTS != TRUE)   144   #if CLOCK_DRIVER_USE_FAST_IDLE   147       uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick();
   148       uint32_t interval = (uint32_t)
   149         ((tc->tc_frequency * us_per_tick) / 1000000);
   151       Clock_driver_timecounter_tick();
   153       if (_SMP_Get_processor_maximum() == 1) {
   155           _Thread_Heir == _Thread_Executing && _Thread_Executing->is_idle
   162             (*tc->tc_get_timecount)(tc),
   178     #if CLOCK_DRIVER_ISRS_PER_TICK   182       if ( !Clock_driver_isrs ) {
   183         Clock_driver_timecounter_tick();
   185         Clock_driver_isrs = CLOCK_DRIVER_ISRS_PER_TICK_VALUE;
   192       Clock_driver_timecounter_tick();
   220   Clock_driver_support_initialize_hardware();
   225   #if CLOCK_DRIVER_ISRS_PER_TICK   226     Clock_driver_isrs = CLOCK_DRIVER_ISRS_PER_TICK_VALUE;
 #define Clock_driver_support_install_isr(isr)
Do nothing by default.
Definition: clockimpl.h:48
 
volatile uint32_t Clock_driver_ticks
ISRs until next clock tick.
Definition: clockimpl.h:114
 
RTEMS_INLINE_ROUTINE const Processor_mask * _SMP_Get_online_processors(void)
Gets all online processors.
Definition: smpimpl.h:318
 
#define Clock_driver_support_find_timer()
This method is rarely used so default it.
Definition: clockimpl.h:55
 
void _Timecounter_Tick_simple(uint32_t delta, uint32_t offset, ISR_lock_Context *lock_context)
Performs a simple timecounter tick.
 
struct timecounter * _Timecounter
The current timecounter.
 
Inlined Routines in the Watchdog Handler.
 
ISR_Vector_number rtems_vector_number
Control block type used to manage the vectors.
Definition: intr.h:47
 
#define _Timecounter_Acquire(lock_context)
Lock to protect the timecounter mechanic.
Definition: timecounter.h:201
 
RTEMS_INLINE_ROUTINE void rtems_timecounter_tick(void)
Performs a timecounter tick.
Definition: timecounter.h:83
 
rtems_status_code rtems_clock_tick(void)
Announce a Clock Tick.
Definition: clocktick.c:25
 
ISR_Handler rtems_isr
Return type for interrupt handler.
Definition: intr.h:52
 
RTEMS_INLINE_ROUTINE bool _Processor_mask_Is_set(const Processor_mask *mask, uint32_t index)
Checks if the specified index bit of the mask is set.
Definition: processormask.h:139
 
Per CPU Core Structure.
Definition: percpu.h:347
 
#define Clock_driver_support_set_interrupt_affinity(online_processors)
Do nothing by default.
Definition: clockimpl.h:69
 
void _Clock_Initialize(void)
Initialize the clock driver.
Definition: clockimpl.h:197
 
Local ISR lock context for acquire and release pairs.
Definition: isrlock.h:65
 
Constants and Structures Related with the Thread Control Block.
 
rtems_isr Clock_isr(rtems_vector_number vector)
Clock_isr.
Definition: clockimpl.h:134
 
#define Clock_driver_support_at_tick()
Do nothing by default.
Definition: clockimpl.h:62
 
SuperCore SMP Implementation.
 
void _Watchdog_Tick(struct Per_CPU_Control *cpu)
Performs a watchdog tick.
Definition: watchdogtick.c:54