RTEMS CPU Kit with SuperCore  4.10.99.0
Data Structures | Defines | Typedefs | Enumerations | Functions | Variables
Timers
RTEMS Classic API

Instantiate RTEMS Timer Data. More...

Collaboration diagram for Timers:

Data Structures

struct  Timer_Control
 The following records define the control block used to manage each timer. More...
struct  Timer_server_Watchdogs
struct  Timer_server_Control
struct  rtems_timer_information
 This is the structure filled in by the timer get information service. More...

Defines

#define RTEMS_TIMER_SERVER_DEFAULT_PRIORITY   (uint32_t) -1
 This is the default value for the priority of the Timer Server.

Typedefs

typedef void rtems_timer_service_routine
 The following types define a pointer to a timer service routine.
typedef
rtems_timer_service_routine(* 
rtems_timer_service_routine_entry )(rtems_id, void *)
 This type defines the type used to manage and indirectly invoke Timer Service Routines (TSRs).
typedef struct Timer_server_Control Timer_server_Control
typedef void(* Timer_server_Schedule_operation )(Timer_server_Control *timer_server, Timer_Control *timer)
 Method used to schedule the insertion of task based timers.

Enumerations

enum  Timer_Classes {
  TIMER_INTERVAL, TIMER_INTERVAL_ON_TASK, TIMER_TIME_OF_DAY, TIMER_TIME_OF_DAY_ON_TASK,
  TIMER_DORMANT
}
 The following enumerated type details the classes to which a timer may belong. More...

Functions

void _Timer_Manager_initialization (void)
 Timer Manager Initialization.
rtems_status_code rtems_timer_create (rtems_name name, rtems_id *id)
 RTEMS Create Timer.
rtems_status_code rtems_timer_ident (rtems_name name, rtems_id *id)
 RTEMS Timer Name to Id.
rtems_status_code rtems_timer_cancel (rtems_id id)
 rtems_timer_cancel
rtems_status_code rtems_timer_delete (rtems_id id)
 RTEMS Delete Timer.
rtems_status_code rtems_timer_fire_after (rtems_id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data)
 RTEMS Timer Fire After.
rtems_status_code rtems_timer_server_fire_after (rtems_id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data)
 RTEMS Timer Server Fire After.
rtems_status_code rtems_timer_fire_when (rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data)
 RTEMS Timer Fire When.
rtems_status_code rtems_timer_server_fire_when (rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data)
 RTEMS Timer Server Fire When Directive.
rtems_status_code rtems_timer_reset (rtems_id id)
 RTEMS Timer Reset.
rtems_status_code rtems_timer_initiate_server (uint32_t priority, uint32_t stack_size, rtems_attribute attribute_set)
 rtems_timer_initiate_server
rtems_status_code rtems_timer_get_information (rtems_id id, rtems_timer_information *the_info)
 RTEMS Get Timer Information.
RTEMS_INLINE_ROUTINE
Timer_Control
_Timer_Allocate (void)
 Timer_Allocate.
RTEMS_INLINE_ROUTINE void _Timer_Free (Timer_Control *the_timer)
 Timer_Free.
RTEMS_INLINE_ROUTINE
Timer_Control
_Timer_Get (Objects_Id id, Objects_Locations *location)
 Timer_Get.
RTEMS_INLINE_ROUTINE bool _Timer_Is_interval_class (Timer_Classes the_class)
 Timer_Is_interval_class.
RTEMS_INLINE_ROUTINE bool _Timer_Is_timer_of_day_class (Timer_Classes the_class)
 Timer_Is_time_of_day_class.
RTEMS_INLINE_ROUTINE bool _Timer_Is_dormant_class (Timer_Classes the_class)
 Timer_Is_dormant_class.
RTEMS_INLINE_ROUTINE bool _Timer_Is_null (Timer_Control *the_timer)
 Timer_Is_null.

Variables

RTEMS_TIMER_EXTERN
Timer_server_Control *volatile 
_Timer_server
 Pointer to default timer server control block.
RTEMS_TIMER_EXTERN
Objects_Information 
_Timer_Information
 The following defines the information control block used to manage this class of objects.

Detailed Description

Instantiate RTEMS Timer Data.

Inline Implementation from Timer Manager.

This encapsulates functionality related to the Classic API Timer Manager.

This include file contains all the constants, structures, and prototypes associated with the Timer Manager. This manager provides facilities to configure, initiate, cancel, and delete timers which will fire at specified intervals of time.

Directives provided are:

This manager provides functionality which allows the application to schedule the execution of methods at a specified time in the future. These methods may be scheduled based upon interval or wall time and may be executed in either the clock tick ISR or in a special dedicated timer server task.

This file contains the static inline implementation of the inlined routines from the Timer Manager.


Define Documentation

#define RTEMS_TIMER_SERVER_DEFAULT_PRIORITY   (uint32_t) -1

This is the default value for the priority of the Timer Server.

When given this priority, a special high priority not accessible via the Classic API is used.


Typedef Documentation

This type defines the type used to manage and indirectly invoke Timer Service Routines (TSRs).

This defines the prototype and interface for a function which is to be used as a TSR.


Enumeration Type Documentation

The following enumerated type details the classes to which a timer may belong.

Enumerator:
TIMER_INTERVAL 

This value indicates the timer is currently in use as an interval timer which will fire in the clock tick ISR.

TIMER_INTERVAL_ON_TASK 

This value indicates the timer is currently in use as an interval timer which will fire in the timer server task.

TIMER_TIME_OF_DAY 

This value indicates the timer is currently in use as an time of day timer which will fire in the clock tick ISR.

TIMER_TIME_OF_DAY_ON_TASK 

This value indicates the timer is currently in use as an time of day timer which will fire in the timer server task.

TIMER_DORMANT 

This value indicates the timer is currently not in use.


Function Documentation

RTEMS_INLINE_ROUTINE Timer_Control* _Timer_Allocate ( void  )

Timer_Allocate.

This function allocates a timer control block from the inactive chain of free timer control blocks.

References _Objects_Allocate(), and _Timer_Information.

RTEMS_INLINE_ROUTINE void _Timer_Free ( Timer_Control the_timer)

Timer_Free.

This routine frees a timer control block to the inactive chain of free timer control blocks.

References _Objects_Free(), _Timer_Information, and Timer_Control::Object.

RTEMS_INLINE_ROUTINE Timer_Control* _Timer_Get ( Objects_Id  id,
Objects_Locations location 
)

Timer_Get.

This function maps timer IDs to timer control blocks. If ID corresponds to a local timer, then it returns the timer control pointer which maps to ID and location is set to OBJECTS_LOCAL. Otherwise, location is set to OBJECTS_ERROR and the returned value is undefined.

References _Objects_Get(), and _Timer_Information.

RTEMS_INLINE_ROUTINE bool _Timer_Is_dormant_class ( Timer_Classes  the_class)

Timer_Is_dormant_class.

This function returns TRUE if the class is that of a DORMANT timer, and FALSE otherwise.

References TIMER_DORMANT.

RTEMS_INLINE_ROUTINE bool _Timer_Is_interval_class ( Timer_Classes  the_class)

Timer_Is_interval_class.

This function returns TRUE if the class is that of an INTERVAL timer, and FALSE otherwise.

References TIMER_INTERVAL, and TIMER_INTERVAL_ON_TASK.

RTEMS_INLINE_ROUTINE bool _Timer_Is_null ( Timer_Control the_timer)

Timer_Is_null.

This function returns TRUE if the_timer is NULL and FALSE otherwise.

RTEMS_INLINE_ROUTINE bool _Timer_Is_timer_of_day_class ( Timer_Classes  the_class)

Timer_Is_time_of_day_class.

This function returns TRUE if the class is that of an INTERVAL timer, and FALSE otherwise.

References TIMER_TIME_OF_DAY.

void _Timer_Manager_initialization ( void  )

Timer Manager Initialization.

This routine performs the initialization necessary for this manager.

rtems_status_code rtems_timer_cancel ( rtems_id  id)

rtems_timer_cancel

This routine implements the rtems_timer_cancel directive. It is used to stop the timer associated with ID from firing.

rtems_status_code rtems_timer_create ( rtems_name  name,
rtems_id id 
)

RTEMS Create Timer.

This routine implements the rtems_timer_create directive. The timer will have the name name. It returns the id of the created timer in ID.

Parameters:
[in]nameis the timer name
[out]idis the pointer to timer id
Return values:
RTEMS_SUCCESSFULif successful or error code if unsuccessful
rtems_status_code rtems_timer_delete ( rtems_id  id)

RTEMS Delete Timer.

This routine implements the rtems_timer_delete directive. The timer indicated by ID is deleted.

Parameters:
[in]idis the timer id
Return values:
Thismethod returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error.
rtems_status_code rtems_timer_fire_after ( rtems_id  id,
rtems_interval  ticks,
rtems_timer_service_routine_entry  routine,
void *  user_data 
)

RTEMS Timer Fire After.

This routine implements the rtems_timer_fire_after directive. It initiates the timer associated with ID to fire in ticks clock ticks. When the timer fires, the routine will be invoked in the context of the rtems_clock_tick directive which is normally invoked as part of servicing a periodic interupt.

Parameters:
[in]idis the timer id
[in]ticksis the interval until routine is fired
[in]routineis the routine to schedule
[in]user_datais the passed as argument to routine when it is fired
Return values:
Thismethod returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error.
rtems_status_code rtems_timer_fire_when ( rtems_id  id,
rtems_time_of_day wall_time,
rtems_timer_service_routine_entry  routine,
void *  user_data 
)

RTEMS Timer Fire When.

This routine implements the rtems_timer_fire_when directive. It initiates the timer associated with ID to fire at wall_time When the timer fires, the routine will be invoked in the context of the rtems_clock_tick directive which is normally invoked as part of servicing a periodic interupt.

Parameters:
[in]idis the timer id
[in]wall_timeis the time of day to fire timer
[in]routineis the routine to schedule
[in]user_datais the passed as argument to routine when it is fired
Return values:
Thismethod returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error.
rtems_status_code rtems_timer_get_information ( rtems_id  id,
rtems_timer_information the_info 
)

RTEMS Get Timer Information.

This routine implements the rtems_timer_get_information directive. This directive returns information about the timer.

Parameters:
[in]idis the timer id
[in]the_infois the pointer to timer information block
Return values:
RTEMS_SUCCESSFULif successful or error code if unsuccessful and *the_info region information block filled in
rtems_status_code rtems_timer_ident ( rtems_name  name,
rtems_id id 
)

RTEMS Timer Name to Id.

This routine implements the rtems_timer_ident directive. This directive returns the timer ID associated with name. If more than one timer is named name, then the timer to which the ID belongs is arbitrary.

Parameters:
[in]nameis the user defined message queue name
[in]idis the pointer to timer id
Return values:
RTEMS_SUCCESSFULif successful or error code if unsuccessful and id filled with the message queue id
rtems_status_code rtems_timer_initiate_server ( uint32_t  priority,
uint32_t  stack_size,
rtems_attribute  attribute_set 
)

rtems_timer_initiate_server

This routine implements the rtems_timer_initiate_server directive. It creates and starts the server that executes task-based timers. It must be invoked before any task-based timers can be initiated.

rtems_status_code rtems_timer_reset ( rtems_id  id)

RTEMS Timer Reset.

Timer Manager - RTEMS Timer Reset

This routine implements the rtems_timer_reset directive. It is used to reinitialize the interval timer associated with ID just as if rtems_timer_fire_after were re-invoked with the same arguments that were used to initiate this timer.

rtems_status_code rtems_timer_server_fire_after ( rtems_id  id,
rtems_interval  ticks,
rtems_timer_service_routine_entry  routine,
void *  user_data 
)

RTEMS Timer Server Fire After.

This routine implements the rtems_timer_server_fire_after directive. It initiates the timer associated with ID to fire in ticks clock ticks. When the timer fires, the routine will be invoked by the Timer Server in the context of a task NOT IN THE CONTEXT of the clock tick interrupt.

Parameters:
[in]idis the timer id
[in]ticksis the interval until routine is fired
[in]routineis the routine to schedule
[in]user_datais the passed as argument to routine when it is fired
Return values:
Thismethod returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error.
rtems_status_code rtems_timer_server_fire_when ( rtems_id  id,
rtems_time_of_day wall_time,
rtems_timer_service_routine_entry  routine,
void *  user_data 
)

RTEMS Timer Server Fire When Directive.

Timer Manager - RTEMS Timer Server Fire When Directive

This routine implements the rtems_timer_server_fire_when directive. It initiates the timer associated with ID to fire at wall_time When the timer fires, the routine will be invoked by the Timer Server in the context of a task NOT IN THE CONTEXT of the clock tick interrupt.


Variable Documentation

RTEMS_TIMER_EXTERN Timer_server_Control* volatile _Timer_server

Pointer to default timer server control block.

This value is NULL when the default timer server is not initialized.