RTEMS
5.0.0
|
Files | |
file | schedulercbsimpl.h |
CBS Scheduler Implementation. | |
Data Structures | |
struct | Scheduler_CBS_Parameters |
struct | Scheduler_CBS_Server |
struct | Scheduler_CBS_Node |
Macros | |
#define | SCHEDULER_CBS_MAXIMUM_PRIORITY SCHEDULER_EDF_MAXIMUM_PRIORITY |
#define | SCHEDULER_CBS_ENTRY_POINTS |
#define | SCHEDULER_CBS_OK 0 |
#define | SCHEDULER_CBS_ERROR_GENERIC -16 |
#define | SCHEDULER_CBS_ERROR_NO_MEMORY -17 |
#define | SCHEDULER_CBS_ERROR_INVALID_PARAMETER -18 |
#define | SCHEDULER_CBS_ERROR_UNAUTHORIZED -19 |
#define | SCHEDULER_CBS_ERROR_UNIMPLEMENTED -20 |
#define | SCHEDULER_CBS_ERROR_MISSING_COMPONENT -21 |
#define | SCHEDULER_CBS_ERROR_INCONSISTENT_STATE -22 |
#define | SCHEDULER_CBS_ERROR_SYSTEM_OVERLOAD -23 |
#define | SCHEDULER_CBS_ERROR_INTERNAL_ERROR -24 |
#define | SCHEDULER_CBS_ERROR_NOT_FOUND -25 |
#define | SCHEDULER_CBS_ERROR_FULL -26 |
#define | SCHEDULER_CBS_ERROR_EMPTY -27 |
#define | SCHEDULER_CBS_ERROR_NOSERVER SCHEDULER_CBS_ERROR_NOT_FOUND |
Typedefs | |
typedef uint32_t | Scheduler_CBS_Server_id |
typedef void(* | Scheduler_CBS_Budget_overrun) (Scheduler_CBS_Server_id server_id) |
Functions | |
void | _Scheduler_CBS_Unblock (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
void | _Scheduler_CBS_Release_job (const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, uint64_t deadline, Thread_queue_Context *queue_context) |
void | _Scheduler_CBS_Cancel_job (const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, Thread_queue_Context *queue_context) |
int | _Scheduler_CBS_Initialize (void) |
_Scheduler_CBS_Initialize More... | |
int | _Scheduler_CBS_Attach_thread (Scheduler_CBS_Server_id server_id, rtems_id task_id) |
Attach a task to an already existing server. More... | |
int | _Scheduler_CBS_Detach_thread (Scheduler_CBS_Server_id server_id, rtems_id task_id) |
Detach from the CBS Server. More... | |
int | _Scheduler_CBS_Cleanup (void) |
Cleanup resources associated to the CBS Library. More... | |
int | _Scheduler_CBS_Create_server (Scheduler_CBS_Parameters *params, Scheduler_CBS_Budget_overrun budget_overrun_callback, rtems_id *server_id) |
Create a new server with specified parameters. More... | |
int | _Scheduler_CBS_Destroy_server (Scheduler_CBS_Server_id server_id) |
Detach all tasks from a server and destroy it. More... | |
int | _Scheduler_CBS_Get_approved_budget (Scheduler_CBS_Server_id server_id, time_t *approved_budget) |
Retrieve the approved budget. More... | |
int | _Scheduler_CBS_Get_remaining_budget (Scheduler_CBS_Server_id server_id, time_t *remaining_budget) |
Retrieve remaining budget for the current server instance. More... | |
int | _Scheduler_CBS_Get_execution_time (Scheduler_CBS_Server_id server_id, time_t *exec_time, time_t *abs_time) |
Get relative time info. More... | |
int | _Scheduler_CBS_Get_parameters (Scheduler_CBS_Server_id server_id, Scheduler_CBS_Parameters *params) |
Retrieve CBS scheduling parameters. More... | |
int | _Scheduler_CBS_Get_server_id (rtems_id task_id, Scheduler_CBS_Server_id *server_id) |
Get a thread server id. More... | |
int | _Scheduler_CBS_Set_parameters (Scheduler_CBS_Server_id server_id, Scheduler_CBS_Parameters *parameters) |
Set parameters for CBS scheduling. More... | |
void | _Scheduler_CBS_Budget_callout (Thread_Control *the_thread) |
Invoked when a limited time quantum is exceeded. More... | |
void | _Scheduler_CBS_Node_initialize (const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority) |
Initializes a CBS specific scheduler node of the_thread. | |
RTEMS_INLINE_ROUTINE Scheduler_CBS_Node * | _Scheduler_CBS_Thread_get_node (Thread_Control *the_thread) |
RTEMS_INLINE_ROUTINE Scheduler_CBS_Node * | _Scheduler_CBS_Node_downcast (Scheduler_Node *node) |
Variables | |
const uint32_t | _Scheduler_CBS_Maximum_servers |
Scheduler_CBS_Server | _Scheduler_CBS_Server_list [] |
#define SCHEDULER_CBS_ENTRY_POINTS |
Entry points for the Constant Bandwidth Server Scheduler.
typedef void(* Scheduler_CBS_Budget_overrun) (Scheduler_CBS_Server_id server_id) |
Callback function invoked when a budget overrun of a task occurs.
typedef uint32_t Scheduler_CBS_Server_id |
Server id.
int _Scheduler_CBS_Attach_thread | ( | Scheduler_CBS_Server_id | server_id, |
rtems_id | task_id | ||
) |
Attach a task to an already existing server.
Attach a task to an already existing server.
status | code. |
void _Scheduler_CBS_Budget_callout | ( | Thread_Control * | the_thread | ) |
Invoked when a limited time quantum is exceeded.
This routine is invoked when a limited time quantum is exceeded.
int _Scheduler_CBS_Cleanup | ( | void | ) |
Cleanup resources associated to the CBS Library.
Cleanup resources associated to the CBS Library.
status | code. |
int _Scheduler_CBS_Create_server | ( | Scheduler_CBS_Parameters * | params, |
Scheduler_CBS_Budget_overrun | budget_overrun_callback, | ||
rtems_id * | server_id | ||
) |
Create a new server with specified parameters.
Create a new server with specified parameters.
status | code. |
int _Scheduler_CBS_Destroy_server | ( | Scheduler_CBS_Server_id | server_id | ) |
Detach all tasks from a server and destroy it.
Detach all tasks from a server and destroy it.
[in] | server_id | is the ID of the server |
status | code. |
int _Scheduler_CBS_Detach_thread | ( | Scheduler_CBS_Server_id | server_id, |
rtems_id | task_id | ||
) |
Detach from the CBS Server.
Detach from the CBS Server.
status | code. |
int _Scheduler_CBS_Get_approved_budget | ( | Scheduler_CBS_Server_id | server_id, |
time_t * | approved_budget | ||
) |
Retrieve the approved budget.
Retrieve the budget that has been approved for the subsequent server instances.
status | code. |
int _Scheduler_CBS_Get_execution_time | ( | Scheduler_CBS_Server_id | server_id, |
time_t * | exec_time, | ||
time_t * | abs_time | ||
) |
Get relative time info.
Retrieve time info relative to server_id. The server status code is returned.
[in] | server_id | is the server to get the status code from. |
[in] | exec_time | is the execution time. |
[in] | abs_time | is not apparently used. |
status | code. |
int _Scheduler_CBS_Get_parameters | ( | Scheduler_CBS_Server_id | server_id, |
Scheduler_CBS_Parameters * | params | ||
) |
Retrieve CBS scheduling parameters.
Retrieve CBS scheduling parameters.
status | code. |
int _Scheduler_CBS_Get_remaining_budget | ( | Scheduler_CBS_Server_id | server_id, |
time_t * | remaining_budget | ||
) |
Retrieve remaining budget for the current server instance.
Retrieve remaining budget for the current server instance.
status | code. |
int _Scheduler_CBS_Get_server_id | ( | rtems_id | task_id, |
Scheduler_CBS_Server_id * | server_id | ||
) |
Get a thread server id.
Get a thread server id, or SCHEDULER_CBS_ERROR_NOT_FOUND if it is not attached to any server.
status | code. |
int _Scheduler_CBS_Initialize | ( | void | ) |
_Scheduler_CBS_Initialize
Initializes the CBS library.
status | code. |
int _Scheduler_CBS_Set_parameters | ( | Scheduler_CBS_Server_id | server_id, |
Scheduler_CBS_Parameters * | parameters | ||
) |
Set parameters for CBS scheduling.
Change CBS scheduling parameters.
[in] | server_id | is the ID of the server. |
[in] | parameters | are the parameters to set. |
status | code. |
const uint32_t _Scheduler_CBS_Maximum_servers |
Maximum number of simultaneous servers.
Scheduler_CBS_Server _Scheduler_CBS_Server_list[] |
List of servers. The Scheduler_CBS_Server is the index to the array of pointers to _Scheduler_CBS_Server_list.