#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG3 && !defined XPG4
# if defined POSIX || defined UNIX98
#  include "time.h-data"
# else
allow-header time.h
# endif

type {struct sched_param}
element {struct sched_param} int sched_priority
# if !defined POSIX && !defined UNIX98
optional-element {struct sched_param} int sched_ss_low_priority
optional-element {struct sched_param} {struct timespec} sched_ss_repl_period
optional-element {struct sched_param} {struct timespec} sched_ss_init_budget
optional-element {struct sched_param} int sched_ss_max_repl
# endif

# if defined XOPEN2K8 || defined POSIX2008
type pid_t
type time_t
type {struct timespec}
# endif

constant SCHED_FIFO
constant SCHED_RR
# if !defined POSIX && !defined UNIX98
optional-constant SCHED_SPORADIC
# endif
constant SCHED_OTHER

function int sched_get_priority_max (int)
function int sched_get_priority_min (int)
function int sched_getparam (pid_t, struct sched_param*)
function int sched_getscheduler (pid_t)
function int sched_rr_get_interval (pid_t, struct timespec*)
function int sched_setparam (pid_t, const struct sched_param*)
function int sched_setscheduler (pid_t, int, const struct sched_param*)
function int sched_yield (void)

allow sched_*
allow SCHED_*
allow *_t
#endif
