RTEMS CPU Kit with SuperCore
4.11.3
|
![]() |
Files | |
file | schedulercbsimpl.h |
CBS Scheduler Implementation. | |
Data Structures | |
struct | Scheduler_CBS_Parameters |
This structure handles server parameters. More... | |
struct | Scheduler_CBS_Server |
This structure represents a time server. More... | |
struct | Scheduler_CBS_Node |
This structure handles CBS specific data of a thread. More... | |
Macros | |
#define | SCHEDULER_CBS_ENTRY_POINTS |
Entry points for the Constant Bandwidth Server Scheduler. More... | |
#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 |
Server id. More... | |
typedef void(* | Scheduler_CBS_Budget_overrun) (Scheduler_CBS_Server_id server_id) |
Callback function invoked when a budget overrun of a task occurs. More... | |
Functions | |
Scheduler_Void_or_thread | _Scheduler_CBS_Unblock (const Scheduler_Control *scheduler, Thread_Control *the_thread) |
Unblocks a thread from the queue. More... | |
void | _Scheduler_CBS_Release_job (const Scheduler_Control *scheduler, Thread_Control *the_thread, uint32_t length) |
Called when a new job of task is released. More... | |
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, Thread_Control *the_thread) |
Initializes a CBS specific scheduler node of the_thread. | |
RTEMS_INLINE_ROUTINE Scheduler_CBS_Node * | _Scheduler_CBS_Thread_get_node (Thread_Control *the_thread) |
Variables | |
const uint32_t | _Scheduler_CBS_Maximum_servers |
Maximum number of simultaneous servers. More... | |
Scheduler_CBS_Server | _Scheduler_CBS_Server_list [] |
List of servers. More... | |
#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. |
References _Scheduler_CBS_Maximum_servers, and _Scheduler_CBS_Server_list.
Referenced by qres_cleanup(), and rtems_cbs_cleanup().
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. |
Referenced by qres_init(), and rtems_cbs_initialize().
void _Scheduler_CBS_Release_job | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
uint32_t | length | ||
) |
Called when a new job of task is released.
This routine is called when a new job of task is released. It is called only from Rate Monotonic manager in the beginning of new period. Deadline has to be shifted and budget replenished.
[in] | scheduler | The scheduler instance. |
[in] | the_thread | is the owner of the job. |
[in] | length | of the new job from now. If equal to 0, the job was cancelled or deleted. |
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. |
Scheduler_Void_or_thread _Scheduler_CBS_Unblock | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread | ||
) |
Unblocks a thread from the queue.
This routine adds the_thread to the scheduling decision, that is, adds it to the ready queue and updates any appropriate scheduling variables, for example the heir thread. It is checked whether the remaining budget is sufficient. If not, the thread continues as a new job in order to protect concurrent threads.
[in] | scheduler | The scheduler instance. |
[in] | the_thread | will be unblocked. |
const uint32_t _Scheduler_CBS_Maximum_servers |
Maximum number of simultaneous servers.
Referenced by _Scheduler_CBS_Cleanup().
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.
Referenced by _Scheduler_CBS_Cleanup().