typedef frs_fsched_info_t | A structure containing information about one scheduler, including its CPU number, time base, and number of minor frames. Used when creating a Frame Scheduler. |
typedef frs_t | A structure containing an frs_fsched_info_t and the process ID of the frs control of the master Frame Scheduler. Used to create or specify any Frame Scheduler. |
typedef frs_queue_info_t | A structure containing information about one activity process: the Frame Scheduler and minor frame it uses and its scheduling discipline. Used when enqueuing a process. |
typedef frs_recv_info_t | A structure containing error recovery options. |
Frame Scheduler Operations
Operation | Application Interface Options |
Create a Frame Scheduler | frs_t* frs_create(int cpu, int intr_source, int intr_qualifier, int n_minors, pid_t sync_master_pid, int num_slaves); frs_t* frs_create_master(int cpu, int intr_source, int intr_qualifier, int n_minors, int num_slaves); frs_t* frs_create_slave(int cpu, frs_t* sync_master_frs); |
Enqueue an activity process to a Frame Scheduler | int frs_enqueue(frs_t* frs, pid_t pid, int minor_index, uint discipline); |
Join a Frame Scheduler (activity is ready to start) | int frs_join(frs_t* frs); |
Start scheduling (all activities enqueued) | int frs_start(frs_t* frs); |
Yield control after completing activity | int frs_yield(void); |
Pause scheduling at end of minor frame | int frs_stop(frs_t* frs); |
Resume scheduling at next time-base interrupt | int frs_resume(frs_t* frs): |
Destroy a Frame Scheduler and send SIGKILL to its FRS control process | int frs_destroy(frs_t* frs); |
Interrogate a process queue | int frs_getqueuelen(frs_t* frs, int minor_index); int frs_readqueue(frs_t* frs, int minor_index, pid_t* pidlist); |
Remove a process from a queue | int frs_premove(frs_t* frs, int minor_index, pid_t remove_pid); |
Reinsert a process in a queue, possibly changing discipline | int frs_pinsert(frs_t* frs, int minor_index, pid_t insert_pid, int discipline, pid_t base_pid); |
Retrieve error-recovery options | int frs_getattr( frs_t* frs, int minor_index, pid_t pid, frs_attr_t att_index, frs_recv_info_t* options); |
Set error-recovery options | int frs_setattr( frs_t* frs, int minor_index, pid_t pid, frs_attr_t att_index, frs_recv_info_t* options); |
Frame Scheduler schedctl() Support
Library Function | Schedctl Syntax |
frs_create() | int schedctl(MPTS_FRS_CREATE, frs_info_t* frs_info); |
frs_enqueue() | int schedctl(MPTS_FRS_ENQUEUE, frs_queue_info_t* frs_queue_info); |
frs_join() | int schedctl(MPTS_FRS_JOIN, pid_t frs_master); |
frs_start() | int schedctl(MPTS_FRS_START, pid_t frs_master); |
frs_yield() | int schedctl(MPTS_FRS_YIELD); |
frs_stop() | int schedctl(MPTS_FRS_STOP, pid_t frs_master); |
frs_resume() | int schedctl(MPTS_FRS_RESUME, pid_t frs_master); |
frs_destroy() | int schedctl(MPTS_FRS_DESTROY, pid_t frs_master); |
frs_getqueuelen() | int schedctl(MPTS_FRS_GETQUEUELEN, frs_queue_info_t* frs_queue_info); |
frs_readqueue() | int schedctl(MPTS_FRS_READQUEUE, frs_queue_info_t* frs_queue_info, pid_t* pidlist); |
frs_premove() | int schedctl(MPTS_FRS_PREMOVE, frs_queue_info_t* frs_queue_info); |
frs_pinsert() | int schedctl(MPTS_FRS_PINSERT, frs_queue_info_t* frs_queue_info, pid_t *base_pid); |
frs_getattr() | int schectl(MPTS_FRS_GETATTR, frs_attr_info_t* frs_attr_info); |
frs_setattr() | int schectl(MPTS_FRS_SETATTR, frs_attr_info_t* frs_attr_info); |