RTEMS 6.1-rc6
|
The Rate-Monotonic Manager provides facilities to implement tasks which execute in a periodic fashion. Critically, it also gathers information about the execution of those periods and can provide important statistics to the user which can be used to analyze and tune the application. More...
Data Structures | |
struct | rtems_rate_monotonic_period_statistics |
This structure provides the statistics of a period. More... | |
struct | rtems_rate_monotonic_period_status |
This structure provides the detailed status of a period. More... | |
Macros | |
#define | RTEMS_PERIOD_STATUS WATCHDOG_NO_TIMEOUT |
This constant is the interval passed to the rtems_rate_monotonic_period() directive to obtain status information. | |
Enumerations | |
enum | rtems_rate_monotonic_period_states { RATE_MONOTONIC_INACTIVE , RATE_MONOTONIC_ACTIVE , RATE_MONOTONIC_EXPIRED } |
This enumeration defines the states in which a period may be. More... | |
The Rate-Monotonic Manager provides facilities to implement tasks which execute in a periodic fashion. Critically, it also gathers information about the execution of those periods and can provide important statistics to the user which can be used to analyze and tune the application.
This enumeration defines the states in which a period may be.
rtems_status_code rtems_rate_monotonic_cancel | ( | rtems_id | id | ) |
Cancels the period.
id | is the rate monotonic period identifier. |
This directive cancels the rate monotonic period specified by id
. This period may be reinitiated by the next invocation of rtems_rate_monotonic_period().
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no rate monotonic period associated with the identifier specified by id . |
RTEMS_NOT_OWNER_OF_RESOURCE | The rate monotonic period was not created by the calling task. |
The following constraints apply to this directive:
rtems_status_code rtems_rate_monotonic_create | ( | rtems_name | name, |
rtems_id * | id | ||
) |
Creates a period.
name | is the object name of the period. | |
[out] | id | is the pointer to an rtems_id object. When the directive call is successful, the identifier of the created period will be stored in this object. |
This directive creates a period which resides on the local node. The period has the user-defined object name specified in name
The assigned object identifier is returned in id
. This identifier is used to access the period with other rate monotonic related directives.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_NAME | The name parameter was invalid. |
RTEMS_TOO_MANY | There was no inactive object available to create a period. The number of periods available to the application is configured through the CONFIGURE_MAXIMUM_PERIODS application configuration option. |
The calling task is registered as the owner of the created period. Some directives can be only used by this task for the created period.
For control and maintenance of the period, RTEMS allocates a PCB from the local PCB free pool and initializes it.
The following constraints apply to this directive:
rtems_status_code rtems_rate_monotonic_delete | ( | rtems_id | id | ) |
Deletes the period.
id | is the period identifier. |
This directive deletes the period specified by id
. If the period is running, it is automatically canceled.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no period associated with the identifier specified by id . |
The following constraints apply to this directive:
rtems_status_code rtems_rate_monotonic_get_statistics | ( | rtems_id | id, |
rtems_rate_monotonic_period_statistics * | status | ||
) |
Gets the statistics of the period.
id | is the rate monotonic period identifier. | |
[out] | status | is the pointer to an rtems_rate_monotonic_period_statistics object. When the directive call is successful, the period statistics will be stored in this object. |
This directive returns the statistics of the rate monotonic period specified by id
. The statistics of the period will be returned in the members of the period statistics object referenced by status
:
count
member is set to the number of periods executed.missed_count
member is set to the number of periods missed.min_cpu_time
member is set to the least amount of processor time used in the period.max_cpu_time
member is set to the highest amount of processor time used in the period.total_cpu_time
member is set to the total amount of processor time used in the period.min_wall_time
member is set to the least amount of CLOCK_MONOTONIC time used in the period.max_wall_time
member is set to the highest amount of CLOCK_MONOTONIC time used in the period.total_wall_time
member is set to the total amount of CLOCK_MONOTONIC time used in the period.RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no rate monotonic period associated with the identifier specified by id . |
RTEMS_INVALID_ADDRESS | The status parameter was NULL. |
The following constraints apply to this directive:
rtems_status_code rtems_rate_monotonic_get_status | ( | rtems_id | id, |
rtems_rate_monotonic_period_status * | status | ||
) |
Gets the detailed status of the period.
id | is the rate monotonic period identifier. | |
[out] | status | is the pointer to an rtems_rate_monotonic_period_status object. When the directive call is successful, the detailed period status will be stored in this object. |
This directive returns the detailed status of the rate monotonic period specified by id
. The detailed status of the period will be returned in the members of the period status object referenced by status
:
owner
member is set to the identifier of the owner task of the period.state
member is set to the current state of the period.postponed_jobs_count
member is set to the count of jobs which are not released yet.since_last_period
and executed_since_last_period
members will be set to zero. Otherwise, both members will contain time information since the last successful invocation of the rtems_rate_monotonic_period() directive by the owner task. More specifically, the since_last_period
member will be set to the time elapsed since the last successful invocation. The executed_since_last_period
member will be set to the processor time consumed by the owner task since the last successful invocation.RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no rate monotonic period associated with the identifier specified by id . |
RTEMS_INVALID_ADDRESS | The status parameter was NULL. |
The following constraints apply to this directive:
rtems_status_code rtems_rate_monotonic_ident | ( | rtems_name | name, |
rtems_id * | id | ||
) |
Identifies a period 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 period identifier associated with the period 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 period name is not unique, then the period identifier will match the first period with that name in the search order. However, this period identifier is not guaranteed to correspond to the desired period.
The objects are searched from lowest to the highest index. Only the local node is searched.
The period identifier is used with other rate monotonic related directives to access the period.
The following constraints apply to this directive:
rtems_status_code rtems_rate_monotonic_period | ( | rtems_id | id, |
rtems_interval | length | ||
) |
Concludes the current period and start the next period, or gets the period status.
id | is the rate monotonic period identifier. |
length | is the period length in clock ticks or RTEMS_PERIOD_STATUS to get the period status. |
This directive initiates the rate monotonic period specified by id
with a length of period ticks specified by length
. If the period is running, then the calling task will block for the remainder of the period before reinitiating the period with the specified period length. If the period was not running (either expired or never initiated), the period is immediately initiated and the directive returns immediately. If the period has expired, the postponed job will be released immediately and the following calls of this directive will release postponed jobs until there is no more deadline miss.
If invoked with a period length of RTEMS_PERIOD_STATUS ticks, the current state of the period will be returned. The directive status indicates the current state of the period. This does not alter the state or period length of the period.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no rate monotonic period associated with the identifier specified by id . |
RTEMS_NOT_OWNER_OF_RESOURCE | The rate monotonic period was not created by the calling task. |
RTEMS_NOT_DEFINED | The rate monotonic period has never been initiated (only possible when the length parameter was equal to RTEMS_PERIOD_STATUS). |
RTEMS_TIMEOUT | The rate monotonic period has expired. |
The following constraints apply to this directive:
void rtems_rate_monotonic_report_statistics | ( | void | ) |
Reports the period statistics using the printk() printer.
This directive prints a report on all active periods which have executed at least one period using the printk() printer.
The following constraints apply to this directive:
void rtems_rate_monotonic_report_statistics_with_plugin | ( | const struct rtems_printer * | printer | ) |
Reports the period statistics using the printer plugin.
printer | is the printer plugin to output the report. |
This directive prints a report on all active periods which have executed at least one period using the printer plugin specified by printer
.
The following constraints apply to this directive:
void rtems_rate_monotonic_reset_all_statistics | ( | void | ) |
Resets the statistics of all periods.
This directive resets the statistics information associated with all rate monotonic period instances.
The following constraints apply to this directive:
rtems_status_code rtems_rate_monotonic_reset_statistics | ( | rtems_id | id | ) |
Resets the statistics of the period.
id | is the rate monotonic period identifier. |
This directive resets the statistics of the rate monotonic period specified by id
.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no rate monotonic period associated with the identifier specified by id . |
The following constraints apply to this directive: