summaryrefslogtreecommitdiffstats
path: root/doc/posix_users/sched.t
diff options
context:
space:
mode:
Diffstat (limited to 'doc/posix_users/sched.t')
-rw-r--r--doc/posix_users/sched.t219
1 files changed, 219 insertions, 0 deletions
diff --git a/doc/posix_users/sched.t b/doc/posix_users/sched.t
new file mode 100644
index 0000000000..cff5c25fc6
--- /dev/null
+++ b/doc/posix_users/sched.t
@@ -0,0 +1,219 @@
+@c
+@c COPYRIGHT (c) 1988-2002.
+@c On-Line Applications Research Corporation (OAR).
+@c All rights reserved.
+@c
+@c $Id$
+@c
+
+@chapter Scheduler Manager
+
+@section Introduction
+
+The scheduler manager ...
+
+The directives provided by the scheduler manager are:
+
+@itemize @bullet
+@item @code{sched_get_priority_min} - Get Minimum Priority Value
+@item @code{sched_get_priority_max} - Get Maximum Priority Value
+@item @code{sched_rr_get_interval} - Get Timeslicing Quantum
+@item @code{sched_yield} - Yield the Processor
+@end itemize
+
+@section Background
+
+@subsection Priority
+
+In the RTEMS implementation of the POSIX API, the priorities range from
+the low priority of @code{sched_get_priority_min()} to the highest priority of
+@code{sched_get_priority_max()}. Numerically higher values represent higher
+priorities.
+
+@subsection Scheduling Policies
+
+The following scheduling policies are available:
+
+@table @b
+@item SCHED_FIFO
+Priority-based, preemptive scheduling with no timeslicing. This is equivalent
+to what is called "manual round-robin" scheduling.
+
+@item SCHED_RR
+Priority-based, preemptive scheduling with timeslicing. Time quantums are
+maintained on a per-thread basis and are not reset at each context switch.
+Thus, a thread which is preempted and subsequently resumes execution will
+attempt to complete the unused portion of its time quantum.
+
+@item SCHED_OTHER
+Priority-based, preemptive scheduling with timeslicing. Time quantums are
+maintained on a per-thread basis and are reset at each context switch.
+
+@item SCHED_SPORADIC
+Priority-based, preemptive scheduling utilizing three additional parameters:
+budget, replenishment period, and low priority. Under this policy, the
+thread is allowed to execute for "budget" amount of time before its priority
+is lowered to "low priority". At the end of each replenishment period,
+the thread resumes its initial priority and has its budget replenished.
+
+@end table
+
+@section Operations
+
+There is currently no text in this section.
+
+@section Directives
+
+This section details the scheduler manager's directives.
+A subsection is dedicated to each of this manager's directives
+and describes the calling sequence, related constants, usage,
+and status codes.
+
+@c
+@c
+@c
+@page
+@subsection sched_get_priority_min - Get Minimum Priority Value
+
+@findex sched_get_priority_min
+@cindex get minimum priority value
+
+@subheading CALLING SEQUENCE:
+
+@example
+#include <sched.h>
+
+int sched_get_priority_min(
+ int policy
+);
+@end example
+
+@subheading STATUS CODES:
+
+On error, this routine returns -1 and sets errno to one of the following:
+
+@table @b
+@item EINVAL
+The indicated policy is invalid.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine return the minimum (numerically and logically lowest) priority
+for the specified @code{policy}.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection sched_get_priority_max - Get Maximum Priority Value
+
+@findex sched_get_priority_max
+@cindex get maximum priority value
+
+@subheading CALLING SEQUENCE:
+
+@example
+#include <sched.h>
+
+int sched_get_priority_max(
+ int policy
+);
+@end example
+
+@subheading STATUS CODES:
+
+On error, this routine returns -1 and sets errno to one of the following:
+
+@table @b
+@item EINVAL
+The indicated policy is invalid.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine return the maximum (numerically and logically highest) priority
+for the specified @code{policy}.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection sched_rr_get_interval - Get Timeslicing Quantum
+
+@findex sched_rr_get_interval
+@cindex get timeslicing quantum
+
+@subheading CALLING SEQUENCE:
+
+@example
+#include <sched.h>
+
+int sched_rr_get_interval(
+ pid_t pid,
+ struct timespec *interval
+);
+@end example
+
+@subheading STATUS CODES:
+
+On error, this routine returns -1 and sets errno to one of the following:
+
+@table @b
+@item ESRCH
+The indicated process id is invalid.
+
+@item EINVAL
+The specified interval pointer parameter is invalid.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine returns the length of the timeslice quantum in the
+@code{interval} parameter for the specified @code{pid}.
+
+@subheading NOTES:
+
+The @code{pid} argument should be 0 to indicate the calling process.
+
+@c
+@c
+@c
+@page
+@subsection sched_yield - Yield the Processor
+
+@findex sched_yield
+@cindex yield the processor
+
+@subheading CALLING SEQUENCE:
+
+@example
+#include <sched.h>
+
+int sched_yield( void );
+@end example
+
+@subheading STATUS CODES:
+
+This routine always returns zero to indicate success.
+
+@subheading DESCRIPTION:
+
+This call forces the calling thread to yield the processor to another
+thread. Normally this is used to implement voluntary round-robin
+task scheduling.
+
+@subheading NOTES:
+
+NONE