RTEMS  5.0.0
Files | Data Structures | Macros | Typedefs | Functions | Variables

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 []
 

Detailed Description

Macro Definition Documentation

◆ SCHEDULER_CBS_ENTRY_POINTS

#define SCHEDULER_CBS_ENTRY_POINTS
Value:
{ \
_Scheduler_EDF_Initialize, /* initialize entry point */ \
_Scheduler_EDF_Schedule, /* schedule entry point */ \
_Scheduler_EDF_Yield, /* yield entry point */ \
_Scheduler_EDF_Block, /* block entry point */ \
_Scheduler_CBS_Unblock, /* unblock entry point */ \
_Scheduler_EDF_Update_priority, /* update priority entry point */ \
_Scheduler_EDF_Map_priority, /* map priority entry point */ \
_Scheduler_EDF_Unmap_priority, /* unmap priority entry point */ \
_Scheduler_CBS_Node_initialize, /* node initialize entry point */ \
_Scheduler_default_Node_destroy, /* node destroy entry point */ \
_Scheduler_CBS_Release_job, /* new period of task */ \
_Scheduler_CBS_Cancel_job, /* cancel period of task */ \
_Scheduler_default_Tick, /* tick entry point */ \
_Scheduler_default_Start_idle /* start idle entry point */ \
SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \
}
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.
Definition: schedulercbsnodeinit.c:23

Entry points for the Constant Bandwidth Server Scheduler.

Note
: The CBS scheduler is an enhancement of EDF scheduler, therefor some routines are similar.

Typedef Documentation

◆ Scheduler_CBS_Budget_overrun

typedef void(* Scheduler_CBS_Budget_overrun) (Scheduler_CBS_Server_id server_id)

Callback function invoked when a budget overrun of a task occurs.

◆ Scheduler_CBS_Server_id

typedef uint32_t Scheduler_CBS_Server_id

Server id.

Function Documentation

◆ _Scheduler_CBS_Attach_thread()

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.

Return values
statuscode.

◆ _Scheduler_CBS_Budget_callout()

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.

◆ _Scheduler_CBS_Cleanup()

int _Scheduler_CBS_Cleanup ( void  )

Cleanup resources associated to the CBS Library.

Cleanup resources associated to the CBS Library.

Return values
statuscode.

◆ _Scheduler_CBS_Create_server()

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.

Return values
statuscode.

◆ _Scheduler_CBS_Destroy_server()

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.

Parameters
[in]server_idis the ID of the server
Return values
statuscode.

◆ _Scheduler_CBS_Detach_thread()

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.

Return values
statuscode.

◆ _Scheduler_CBS_Get_approved_budget()

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.

Return values
statuscode.

◆ _Scheduler_CBS_Get_execution_time()

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.

Parameters
[in]server_idis the server to get the status code from.
[in]exec_timeis the execution time.
[in]abs_timeis not apparently used.
Return values
statuscode.

◆ _Scheduler_CBS_Get_parameters()

int _Scheduler_CBS_Get_parameters ( Scheduler_CBS_Server_id  server_id,
Scheduler_CBS_Parameters params 
)

Retrieve CBS scheduling parameters.

Retrieve CBS scheduling parameters.

Return values
statuscode.

◆ _Scheduler_CBS_Get_remaining_budget()

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.

Return values
statuscode.

◆ _Scheduler_CBS_Get_server_id()

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.

Return values
statuscode.

◆ _Scheduler_CBS_Initialize()

int _Scheduler_CBS_Initialize ( void  )

_Scheduler_CBS_Initialize

Initializes the CBS library.

Return values
statuscode.

◆ _Scheduler_CBS_Set_parameters()

int _Scheduler_CBS_Set_parameters ( Scheduler_CBS_Server_id  server_id,
Scheduler_CBS_Parameters parameters 
)

Set parameters for CBS scheduling.

Change CBS scheduling parameters.

Parameters
[in]server_idis the ID of the server.
[in]parametersare the parameters to set.
Return values
statuscode.

Variable Documentation

◆ _Scheduler_CBS_Maximum_servers

const uint32_t _Scheduler_CBS_Maximum_servers

Maximum number of simultaneous servers.

◆ _Scheduler_CBS_Server_list

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.