RTEMS CPU Kit with SuperCore  4.11.3
Modules | Files | Data Structures | Macros | Typedefs | Enumerations | Functions
Rate Monotonic Scheduler

Classic API Rate Monotonic Manager. More...

Collaboration diagram for Rate Monotonic Scheduler:

Modules

 Classic Rate Monotonic Scheduler Implementation
 

Files

file  ratemon.c
 Rate Monotonic Manager Initialization.
 
file  ratemoncancel.c
 RTEMS Rate Monotonic Cancel.
 
file  ratemoncreate.c
 Create a Period.
 
file  ratemondata.c
 Instantiate RTEMS Period Data.
 
file  ratemondelete.c
 RTEMS Delete Rate Monotonic.
 
file  ratemongetstatistics.c
 RTEMS Rate Monotonic Get Statistics.
 
file  ratemongetstatus.c
 RTEMS Rate Monotonic Get Status.
 
file  ratemonident.c
 RTEMS Rate Monotonic Name to Id.
 
file  ratemonperiod.c
 Rate Monotonic Support.
 
file  ratemonreportstatistics.c
 RTEMS Report Rate Monotonic Statistics.
 
file  ratemonresetall.c
 rtems_rate_monotonic_reset_all_statistics
 
file  ratemonresetstatistics.c
 RTEMS Rate Monotonic Reset Statistics.
 
file  ratemontimeout.c
 Rate Monotonic Timeout.
 

Data Structures

struct  rtems_rate_monotonic_period_statistics
 The following defines the PUBLIC data structure that has the statistics kept on each period instance. More...
 
struct  Rate_monotonic_Statistics
 The following defines the INTERNAL data structure that has the statistics kept on each period instance. More...
 
struct  rtems_rate_monotonic_period_status
 The following defines the period status structure. More...
 
struct  Rate_monotonic_Control
 The following structure defines the control block used to manage each period. More...
 

Macros

#define RTEMS_PERIOD_STATUS   WATCHDOG_NO_TIMEOUT
 The following constant is the interval passed to the rate_monontonic_period directive to obtain status information.
 

Typedefs

typedef struct timespec rtems_rate_monotonic_period_time_t
 This is the public type used for the rate monotonic timing statistics.
 
typedef Timestamp_Control Rate_monotonic_Period_time_t
 This is the internal type used for the rate monotonic timing statistics.
 

Enumerations

enum  rtems_rate_monotonic_period_states {
  RATE_MONOTONIC_INACTIVE, RATE_MONOTONIC_OWNER_IS_BLOCKING, RATE_MONOTONIC_ACTIVE, RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING,
  RATE_MONOTONIC_EXPIRED
}
 The following enumerated type defines the states in which a period may be. More...
 

Functions

rtems_status_code rtems_rate_monotonic_create (rtems_name name, rtems_id *id)
 Create a Period. More...
 
rtems_status_code rtems_rate_monotonic_ident (rtems_name name, rtems_id *id)
 RTEMS Rate Monotonic Name to Id. More...
 
rtems_status_code rtems_rate_monotonic_cancel (rtems_id id)
 RTEMS Rate Monotonic Cancel. More...
 
rtems_status_code rtems_rate_monotonic_delete (rtems_id id)
 RTEMS Delete Rate Monotonic. More...
 
rtems_status_code rtems_rate_monotonic_get_status (rtems_id id, rtems_rate_monotonic_period_status *status)
 RTEMS Rate Monotonic Get Status. More...
 
rtems_status_code rtems_rate_monotonic_get_statistics (rtems_id id, rtems_rate_monotonic_period_statistics *statistics)
 RTEMS Rate Monotonic Get Statistics. More...
 
rtems_status_code rtems_rate_monotonic_reset_statistics (rtems_id id)
 RTEMS Rate Monotonic Reset Statistics. More...
 
void rtems_rate_monotonic_reset_all_statistics (void)
 rtems_rate_monotonic_reset_all_statistics More...
 
void rtems_rate_monotonic_report_statistics_with_plugin (void *context, rtems_printk_plugin_t print)
 RTEMS Report Rate Monotonic Statistics. More...
 
void rtems_rate_monotonic_report_statistics (void)
 RTEMS Report Rate Monotonic Statistics. More...
 
rtems_status_code rtems_rate_monotonic_period (rtems_id id, rtems_interval length)
 RTEMS Rate Monotonic Period. More...
 

Detailed Description

Classic API Rate Monotonic Manager.

This encapsulates functionality related to the Classic API Rate Monotonic Manager.

This include file contains all the constants, structures, and prototypes associated with the Rate Monotonic Manager. This manager provides facilities to implement threads which execute in a periodic fashion.

Directives provided are:

Statistics are kept for each period and can be obtained or printed via API calls. The statistics kept include minimum, maximum and average times for both cpu usage and wall time. The statistics indicate the execution time used by the owning thread between successive calls to rtems_rate_monotonic_period.

Rate Monotonic Manager – Reset Statistics for All Periods

Enumeration Type Documentation

◆ rtems_rate_monotonic_period_states

The following enumerated type defines the states in which a period may be.

Enumerator
RATE_MONOTONIC_INACTIVE 

This value indicates the period is off the watchdog chain, and has never been initialized.

RATE_MONOTONIC_OWNER_IS_BLOCKING 

This value indicates the period is on the watchdog chain, and the owner is blocked waiting on it.

RATE_MONOTONIC_ACTIVE 

This value indicates the period is on the watchdog chain, and running.

The owner should be executed or blocked waiting on another object.

RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING 

This value indicates the period is on the watchdog chain, and has expired.

The owner should be blocked waiting for the next period.

RATE_MONOTONIC_EXPIRED 

This value indicates the period is off the watchdog chain, and has expired.

The owner is still executing and has taken too much all time to complete this iteration of the period.

Function Documentation

◆ rtems_rate_monotonic_cancel()

rtems_status_code rtems_rate_monotonic_cancel ( rtems_id  id)

RTEMS Rate Monotonic Cancel.

This routine implements the rtems_rate_monotonic_cancel directive. This directive stops the period associated with ID from continuing to run.

Parameters
[in]idis the rate monotonic id
Return values
RTEMS_SUCCESSFULif successful and caller is not the owning thread or error code if unsuccessful

References _Rate_monotonic_Get().

◆ rtems_rate_monotonic_create()

rtems_status_code rtems_rate_monotonic_create ( rtems_name  name,
rtems_id id 
)

◆ rtems_rate_monotonic_delete()

rtems_status_code rtems_rate_monotonic_delete ( rtems_id  id)

RTEMS Delete Rate Monotonic.

This routine implements the rtems_rate_monotonic_delete directive. The period indicated by ID is deleted.

Parameters
[in]idis the rate monotonic 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.

References _Objects_Allocator_lock(), and _Rate_monotonic_Get().

◆ rtems_rate_monotonic_get_statistics()

rtems_status_code rtems_rate_monotonic_get_statistics ( rtems_id  id,
rtems_rate_monotonic_period_statistics statistics 
)

RTEMS Rate Monotonic Get Statistics.

This routine implements the rtems_rate_monotonic_get_statistics directive. Statistics gathered from the use of this period are returned.

Parameters
[in]idis the rate monotonic id
[in]statisticsis the pointer to statistics control block
Return values
RTEMS_SUCCESSFULif successful or error code if unsuccessful

◆ rtems_rate_monotonic_get_status()

rtems_status_code rtems_rate_monotonic_get_status ( rtems_id  id,
rtems_rate_monotonic_period_status status 
)

RTEMS Rate Monotonic Get Status.

This routine implements the rtems_rate_monotonic_get_status directive. Information about the period indicated by ID is returned.

Parameters
[in]idis the rate monotonic id
[in]statusis the pointer to status control block
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_rate_monotonic_ident()

rtems_status_code rtems_rate_monotonic_ident ( rtems_name  name,
rtems_id id 
)

RTEMS Rate Monotonic Name to Id.

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

Parameters
[in]nameis the user defined period name
[in]idis the pointer to period 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. If successful, the id will be filled in with the region id.

◆ rtems_rate_monotonic_period()

rtems_status_code rtems_rate_monotonic_period ( rtems_id  id,
rtems_interval  length 
)

RTEMS Rate Monotonic Period.

This routine implements the rtems_rate_monotonic_period directive. When length is non-zero, this directive initiates the period associated with ID from continuing for a period of length. If length is zero, then result is set to indicate the current state of the period.

Parameters
[in]idis the rate monotonic id
[in]lengthis the length of period (in ticks)
Return values
RTEMS_SUCCESSFULif successful or error code if unsuccessful

◆ rtems_rate_monotonic_report_statistics()

void rtems_rate_monotonic_report_statistics ( void  )

RTEMS Report Rate Monotonic Statistics.

This routine allows a thread to print the statistics information on ALL period instances which have non-zero counts using printk.

References printk_plugin(), and rtems_rate_monotonic_report_statistics_with_plugin().

◆ rtems_rate_monotonic_report_statistics_with_plugin()

void rtems_rate_monotonic_report_statistics_with_plugin ( void *  context,
rtems_printk_plugin_t  print 
)

RTEMS Report Rate Monotonic Statistics.

This routine allows a thread to print the statistics information on ALL period instances which have non-zero counts using printk. The implementation of this directive straddles the fence between inside and outside of RTEMS. It is presented as part of the Manager but actually uses other services of the Manager.

Referenced by rtems_rate_monotonic_report_statistics().

◆ rtems_rate_monotonic_reset_all_statistics()

void rtems_rate_monotonic_reset_all_statistics ( void  )

rtems_rate_monotonic_reset_all_statistics

This routine allows a thread to reset the statistics information on ALL period instances.

References _Rate_monotonic_Information, _Thread_Disable_dispatch(), _Thread_Enable_dispatch(), Objects_Information::maximum_id, Objects_Information::minimum_id, and rtems_rate_monotonic_reset_statistics().

◆ rtems_rate_monotonic_reset_statistics()

rtems_status_code rtems_rate_monotonic_reset_statistics ( rtems_id  id)

RTEMS Rate Monotonic Reset Statistics.

Rate Monotonic Manager – Reset Statistics

This routine allows a thread to reset the statistics information on a specific period instance.

References _Rate_monotonic_Get().

Referenced by rtems_rate_monotonic_reset_all_statistics().