#if !defined ISO && !defined POSIX && !defined POSIX2008
constant PRIO_PROCESS
constant PRIO_PGRP
constant PRIO_USER

type rlim_t

constant RLIM_INFINITY
constant RLIM_SAVED_MAX
constant RLIM_SAVED_CUR

constant RUSAGE_SELF
constant RUSAGE_CHILDREN

type {struct rlimit}

element {struct rlimit} rlim_t rlim_cur
element {struct rlimit} rlim_t rlim_max

type {struct rusage}

element {struct rusage} {struct timeval} ru_utime
element {struct rusage} {struct timeval} ru_stime

type {struct timeval}

constant RLIMIT_CORE
constant RLIMIT_CPU
constant RLIMIT_DATA
constant RLIMIT_FSIZE
constant RLIMIT_NOFILE
constant RLIMIT_STACK
constant RLIMIT_AS

function int getpriority (int, id_t)
function int getrlimit (int, struct rlimit*)
function int getrusage (int, struct rusage*)
function int setpriority (int, id_t, int)
function int setrlimit (int, const struct rlimit*)

type id_t

allow-header sys/time.h

allow rlim_*
allow ru_*
allow PRIO_*
allow RLIM_*
allow RLIMIT_*
allow RUSAGE_*
allow *_t
#endif
