19 #ifndef _RTEMS_SCORE_SCHEDULERCBS_H 20 #define _RTEMS_SCORE_SCHEDULERCBS_H 48 #define SCHEDULER_CBS_ENTRY_POINTS \ 50 _Scheduler_EDF_Initialize, \ 51 _Scheduler_EDF_Schedule, \ 52 _Scheduler_EDF_Yield, \ 53 _Scheduler_EDF_Block, \ 54 _Scheduler_CBS_Unblock, \ 55 _Scheduler_EDF_Change_priority, \ 56 SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELP \ 57 _Scheduler_CBS_Node_initialize, \ 58 _Scheduler_default_Node_destroy, \ 59 _Scheduler_EDF_Update_priority, \ 60 _Scheduler_EDF_Priority_compare, \ 61 _Scheduler_CBS_Release_job, \ 62 _Scheduler_default_Tick, \ 63 _Scheduler_default_Start_idle \ 64 SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \ 68 #define SCHEDULER_CBS_OK 0 69 #define SCHEDULER_CBS_ERROR_GENERIC -16 70 #define SCHEDULER_CBS_ERROR_NO_MEMORY -17 71 #define SCHEDULER_CBS_ERROR_INVALID_PARAMETER -18 72 #define SCHEDULER_CBS_ERROR_UNAUTHORIZED -19 73 #define SCHEDULER_CBS_ERROR_UNIMPLEMENTED -20 74 #define SCHEDULER_CBS_ERROR_MISSING_COMPONENT -21 75 #define SCHEDULER_CBS_ERROR_INCONSISTENT_STATE -22 76 #define SCHEDULER_CBS_ERROR_SYSTEM_OVERLOAD -23 77 #define SCHEDULER_CBS_ERROR_INTERNAL_ERROR -24 78 #define SCHEDULER_CBS_ERROR_NOT_FOUND -25 79 #define SCHEDULER_CBS_ERROR_FULL -26 80 #define SCHEDULER_CBS_ERROR_EMPTY -27 81 #define SCHEDULER_CBS_ERROR_NOSERVER SCHEDULER_CBS_ERROR_NOT_FOUND 91 Scheduler_CBS_Server_id server_id
199 Scheduler_CBS_Server_id server_id,
211 Scheduler_CBS_Server_id server_id,
247 Scheduler_CBS_Server_id server_id
259 Scheduler_CBS_Server_id server_id,
260 time_t *approved_budget
271 Scheduler_CBS_Server_id server_id,
272 time_t *remaining_budget
287 Scheduler_CBS_Server_id server_id,
300 Scheduler_CBS_Server_id server_id,
314 Scheduler_CBS_Server_id *server_id
328 Scheduler_CBS_Server_id server_id,
Thread Priority Manipulation Routines.
Scheduler_CBS_Parameters parameters
Server paramenters.
Definition: schedulercbs.h:115
Scheduler control.
Definition: scheduler.h:192
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:80
Scheduler node specialization for EDF schedulers.
Definition: scheduleredf.h:96
int _Scheduler_CBS_Attach_thread(Scheduler_CBS_Server_id server_id, rtems_id task_id)
Attach a task to an already existing server.
Definition: schedulercbsattachthread.c:24
time_t budget
Budget (computation time) of the server.
Definition: schedulercbs.h:101
int _Scheduler_CBS_Get_server_id(rtems_id task_id, Scheduler_CBS_Server_id *server_id)
Get a thread server id.
Definition: schedulercbsgetserverid.c:26
int _Scheduler_CBS_Get_execution_time(Scheduler_CBS_Server_id server_id, time_t *exec_time, time_t *abs_time)
Get relative time info.
Definition: schedulercbsgetexecutiontime.c:25
Scheduler_EDF_Node Base
EDF scheduler specific data of a task.
Definition: schedulercbs.h:132
rtems_id task_id
Task id.
Definition: schedulercbs.h:113
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.
Definition: schedulercbsreleasejob.c:26
Data Related to the Manipulation of Threads for the EDF Scheduler.
const uint32_t _Scheduler_CBS_Maximum_servers
Maximum number of simultaneous servers.
void(* Scheduler_CBS_Budget_overrun)(Scheduler_CBS_Server_id server_id)
Callback function invoked when a budget overrun of a task occurs.
Definition: schedulercbs.h:90
Scheduler_CBS_Server * cbs_server
CBS server specific data of a task.
Definition: schedulercbs.h:134
time_t deadline
Relative deadline of the server.
Definition: schedulercbs.h:99
Constants and Structures Related with the Thread Control Block.
uint32_t Scheduler_CBS_Server_id
Server id.
Definition: schedulercbs.h:87
bool initialized
Indicates if this CBS server is initialized.
Definition: schedulercbs.h:124
int _Scheduler_CBS_Set_parameters(Scheduler_CBS_Server_id server_id, Scheduler_CBS_Parameters *parameters)
Set parameters for CBS scheduling.
Definition: schedulercbssetparameters.c:27
Constants and Structures Associated with the Red-Black Tree Handler.
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
int _Scheduler_CBS_Initialize(void)
_Scheduler_CBS_Initialize
Definition: schedulercbs.c:49
int _Scheduler_CBS_Get_approved_budget(Scheduler_CBS_Server_id server_id, time_t *approved_budget)
Retrieve the approved budget.
Definition: schedulercbsgetapprovedbudget.c:26
Constants and Structures Associated with the Scheduler.
int _Scheduler_CBS_Get_parameters(Scheduler_CBS_Server_id server_id, Scheduler_CBS_Parameters *params)
Retrieve CBS scheduling parameters.
Definition: schedulercbsgetparameters.c:26
Scheduler_CBS_Server _Scheduler_CBS_Server_list[]
List of servers.
This structure handles server parameters.
Definition: schedulercbs.h:97
This structure represents a time server.
Definition: schedulercbs.h:107
int _Scheduler_CBS_Destroy_server(Scheduler_CBS_Server_id server_id)
Detach all tasks from a server and destroy it.
Definition: schedulercbsdestroyserver.c:25
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.
Definition: schedulercbscreateserver.c:23
int _Scheduler_CBS_Cleanup(void)
Cleanup resources associated to the CBS Library.
Definition: schedulercbscleanup.c:24
int _Scheduler_CBS_Detach_thread(Scheduler_CBS_Server_id server_id, rtems_id task_id)
Detach from the CBS Server.
Definition: schedulercbsdetachthread.c:25
int _Scheduler_CBS_Get_remaining_budget(Scheduler_CBS_Server_id server_id, time_t *remaining_budget)
Retrieve remaining budget for the current server instance.
Definition: schedulercbsgetremainingbudget.c:24
void _Scheduler_CBS_Budget_callout(Thread_Control *the_thread)
Invoked when a limited time quantum is exceeded.
Definition: schedulercbs.c:25
This structure handles CBS specific data of a thread.
Definition: schedulercbs.h:130
Scheduler_Void_or_thread _Scheduler_CBS_Unblock(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Unblocks a thread from the queue.
Definition: schedulercbsunblock.c:28
Scheduler_CBS_Budget_overrun cbs_budget_overrun
Callback function invoked when a budget overrun occurs.
Definition: schedulercbs.h:117
void _Scheduler_CBS_Node_initialize(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Initializes a CBS specific scheduler node of the_thread.
Definition: schedulercbsnodeinit.c:23