RTEMS 6.1-rc5
|
The Timer Manager provides support for timer facilities. More...
Data Structures | |
struct | rtems_timer_information |
The structure contains information about a timer. More... | |
Macros | |
#define | TIMER_CLASS_BIT_NOT_DORMANT 0x4 |
This timer class bit indicates that the timer is not dormant. | |
#define | TIMER_CLASS_BIT_ON_TASK 0x2 |
This timer class bit indicates that the timer routine executes in a task context. | |
#define | TIMER_CLASS_BIT_TIME_OF_DAY 0x1 |
This timer class bit indicates that the timer uses a time of day. | |
#define | RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ( (rtems_task_priority) -1 ) |
This constant represents the default value for the task priority of the Timer Server. | |
Typedefs | |
typedef void | rtems_timer_service_routine |
This type defines the return type of routines which can be fired by directives of the Timer Manager. | |
typedef rtems_timer_service_routine(* | rtems_timer_service_routine_entry) (rtems_id, void *) |
This type defines the prototype of routines which can be fired by directives of the Timer Manager. | |
Enumerations | |
enum | Timer_Classes { TIMER_DORMANT , TIMER_INTERVAL = TIMER_CLASS_BIT_NOT_DORMANT , TIMER_INTERVAL_ON_TASK , TIMER_TIME_OF_DAY , TIMER_TIME_OF_DAY_ON_TASK } |
The timer class indicates how the timer was most recently fired. More... | |
The Timer Manager provides support for timer facilities.
#define RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ( (rtems_task_priority) -1 ) |
This constant represents the default value for the task priority of the Timer Server.
When given this priority, a special high priority not accessible via the Classic API is used.
typedef void rtems_timer_service_routine |
This type defines the return type of routines which can be fired by directives of the Timer Manager.
This type can be used to document timer service routines in the source code.
enum Timer_Classes |
The timer class indicates how the timer was most recently fired.
rtems_status_code rtems_timer_cancel | ( | rtems_id | id | ) |
Cancels the timer.
id | is the timer identifier. |
This directive cancels the timer specified by id
. This timer will be reinitiated by the next invocation of rtems_timer_reset(), rtems_timer_fire_after(), rtems_timer_fire_when(), rtems_timer_server_fire_after(), or rtems_timer_server_fire_when() with the same timer identifier.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
The following constraints apply to this directive:
rtems_status_code rtems_timer_create | ( | rtems_name | name, |
rtems_id * | id | ||
) |
Creates a timer.
name | is the object name of the timer. | |
[out] | id | is the pointer to an rtems_id object. When the directive call is successful, the identifier of the created timer will be stored in this object. |
This directive creates a timer which resides on the local node. The timer has the user-defined object name specified in name
. The assigned object identifier is returned in id
. This identifier is used to access the timer with other timer related directives.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_NAME | The name parameter was invalid. |
RTEMS_INVALID_ADDRESS | The id parameter was NULL. |
RTEMS_TOO_MANY | There was no inactive object available to create a timer. The number of timers available to the application is configured through the CONFIGURE_MAXIMUM_TIMERS application configuration option. |
The processor used to maintain the timer is the processor of the calling task at some point during the timer creation.
For control and maintenance of the timer, RTEMS allocates a TMCB from the local TMCB free pool and initializes it.
The following constraints apply to this directive:
rtems_status_code rtems_timer_delete | ( | rtems_id | id | ) |
Deletes the timer.
id | is the timer identifier. |
This directive deletes the timer specified by id
. If the timer is running, it is automatically canceled.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
The following constraints apply to this directive:
rtems_status_code rtems_timer_fire_after | ( | rtems_id | id, |
rtems_interval | ticks, | ||
rtems_timer_service_routine_entry | routine, | ||
void * | user_data | ||
) |
Fires the timer after the interval.
id | is the timer identifier. |
ticks | is the interval until the routine is fired in clock ticks. |
routine | is the routine to schedule. |
user_data | is the argument passed to the routine when it is fired. |
This directive initiates the timer specified by id
. If the timer is running, it is automatically canceled before being initiated. The timer is scheduled to fire after an interval of clock ticks has passed specified by ticks
. When the timer fires, the timer service routine routine
will be invoked with the argument user_data
in the context of the clock tick ISR.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_NUMBER | The ticks parameter was 0. |
RTEMS_INVALID_ADDRESS | The routine parameter was NULL. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
The following constraints apply to this directive:
rtems_status_code rtems_timer_fire_when | ( | rtems_id | id, |
const rtems_time_of_day * | wall_time, | ||
rtems_timer_service_routine_entry | routine, | ||
void * | user_data | ||
) |
Fires the timer at the time of day.
id | is the timer identifier. |
wall_time | is the time of day when the routine is fired. |
routine | is the routine to schedule. |
user_data | is the argument passed to the routine when it is fired. |
This directive initiates the timer specified by id
. If the timer is running, it is automatically canceled before being initiated. The timer is scheduled to fire at the time of day specified by wall_time
. When the timer fires, the timer service routine routine
will be invoked with the argument user_data
in the context of the clock tick ISR.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_NOT_DEFINED | The system date and time was not set. |
RTEMS_INVALID_ADDRESS | The routine parameter was NULL. |
RTEMS_INVALID_ADDRESS | The wall_time parameter was NULL. |
RTEMS_INVALID_CLOCK | The time of day was invalid. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
The following constraints apply to this directive:
rtems_status_code rtems_timer_get_information | ( | rtems_id | id, |
rtems_timer_information * | the_info | ||
) |
Gets information about the timer.
id | is the timer identifier. | |
[out] | the_info | is the pointer to an rtems_timer_information object. When the directive call is successful, the information about the timer will be stored in this object. |
This directive returns information about the timer.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ADDRESS | The the_info parameter was NULL. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
The following constraints apply to this directive:
rtems_status_code rtems_timer_ident | ( | rtems_name | name, |
rtems_id * | id | ||
) |
Identifies a timer by the object name.
name | is the object name to look up. | |
[out] | id | is the pointer to an rtems_id object. When the directive call is successful, the object identifier of an object with the specified name will be stored in this object. |
This directive obtains a timer identifier associated with the timer name specified in name
.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ADDRESS | The id parameter was NULL. |
RTEMS_INVALID_NAME | The name parameter was 0. |
RTEMS_INVALID_NAME | There was no object with the specified name on the local node. |
If the timer name is not unique, then the timer identifier will match the first timer with that name in the search order. However, this timer identifier is not guaranteed to correspond to the desired timer.
The objects are searched from lowest to the highest index. Only the local node is searched.
The timer identifier is used with other timer related directives to access the timer.
The following constraints apply to this directive:
rtems_status_code rtems_timer_initiate_server | ( | rtems_task_priority | priority, |
size_t | stack_size, | ||
rtems_attribute | attribute_set | ||
) |
Initiates the Timer Server.
priority | is the task priority. |
stack_size | is the task stack size in bytes. |
attribute_set | is the task attribute set. |
This directive initiates the Timer Server task. This task is responsible for executing all timers initiated via the rtems_timer_server_fire_after() or rtems_timer_server_fire_when() directives.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INCORRECT_STATE | The Timer Server was already initiated. |
RTEMS_INVALID_PRIORITY | The task priority was invalid. |
RTEMS_TOO_MANY | There was no inactive task object available to create the Timer Server task. |
RTEMS_UNSATISFIED | There was not enough memory to allocate the task storage area. The task storage area contains the task stack, the thread-local storage, and the floating point context. |
RTEMS_UNSATISFIED | One of the task create extensions failed to create the Timer Server task. |
The following constraints apply to this directive:
rtems_status_code rtems_timer_reset | ( | rtems_id | id | ) |
Resets the timer.
id | is the timer identifier. |
This directive resets the timer specified by id
. This timer must have been previously initiated with either the rtems_timer_fire_after() or rtems_timer_server_fire_after() directive. If active the timer is canceled, after which the timer is reinitiated using the same interval and timer service routine which the original rtems_timer_fire_after() or rtems_timer_server_fire_after() directive used.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
RTEMS_NOT_DEFINED | The timer was not of the interval class. |
If the timer has not been used or the last usage of this timer was by a rtems_timer_fire_when() or rtems_timer_server_fire_when() directive, then the RTEMS_NOT_DEFINED error is returned.
Restarting a cancelled after timer results in the timer being reinitiated with its previous timer service routine and interval.
The following constraints apply to this directive:
rtems_status_code rtems_timer_server_fire_after | ( | rtems_id | id, |
rtems_interval | ticks, | ||
rtems_timer_service_routine_entry | routine, | ||
void * | user_data | ||
) |
Fires the timer after the interval using the Timer Server.
id | is the timer identifier. |
ticks | is the interval until the routine is fired in clock ticks. |
routine | is the routine to schedule. |
user_data | is the argument passed to the routine when it is fired. |
This directive initiates the timer specified by id
. If the timer is running, it is automatically canceled before being initiated. The timer is scheduled to fire after an interval of clock ticks has passed specified by ticks
. When the timer fires, the timer service routine routine
will be invoked with the argument user_data
in the context of the Timer Server task.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INCORRECT_STATE | The Timer Server was not initiated. |
RTEMS_INVALID_NUMBER | The ticks parameter was 0. |
RTEMS_INVALID_ADDRESS | The routine parameter was NULL. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
The following constraints apply to this directive:
rtems_status_code rtems_timer_server_fire_when | ( | rtems_id | id, |
const rtems_time_of_day * | wall_time, | ||
rtems_timer_service_routine_entry | routine, | ||
void * | user_data | ||
) |
Fires the timer at the time of day using the Timer Server.
id | is the timer identifier. |
wall_time | is the time of day when the routine is fired. |
routine | is the routine to schedule. |
user_data | is the argument passed to the routine when it is fired. |
This directive initiates the timer specified by id
. If the timer is running, it is automatically canceled before being initiated. The timer is scheduled to fire at the time of day specified by wall_time
. When the timer fires, the timer service routine routine
will be invoked with the argument user_data
in the context of the Timer Server task.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INCORRECT_STATE | The Timer Server was not initiated. |
RTEMS_NOT_DEFINED | The system date and time was not set. |
RTEMS_INVALID_ADDRESS | The routine parameter was NULL. |
RTEMS_INVALID_ADDRESS | The wall_time parameter was NULL. |
RTEMS_INVALID_CLOCK | The time of day was invalid. |
RTEMS_INVALID_ID | There was no timer associated with the identifier specified by id . |
The following constraints apply to this directive: