/*	@(#)resource.h	13.1 (Tolerant) 91/02/02	*/

#ifndef	_RESOURCE_
#define	_RESOURCE_

/*
 *  process priority specifications to get/setpriority
 */
#define	PRIO_MIN	-20
#define	PRIO_MAX	20

#define	PRIO_PROCESS	0
#define	PRIO_PGRP	1
#define	PRIO_USER	2

/*
 *  resource utilization information
 */

#define	RUSAGE_SELF	0
#define	RUSAGE_CHILDREN	-1

struct rusage
{
    struct timeval	ru_utime;	/* user time used */
    struct timeval	ru_stime;	/* system time used */
    long		ru_maxrss;
#define	ru_first	ru_ixrss
    long		ru_ixrss;	/* integral shared memory size */
    long		ru_idrss;	/* integral unshared data size */
    long		ru_isrss;	/* integral unshared stack size */
    long		ru_minflt;	/* page reclaims */
    long		ru_majflt;	/* page faults */
    long		ru_nswap;	/* swaps */
    long		ru_inblock;	/* block input operations */
    long		ru_oublock;	/* block output operations */
    long		ru_msgsnd;	/* messages sent */
    long		ru_msgrcv;	/* messages received */
    long		ru_nsignals;	/* signals received */
    long		ru_nvcsw;	/* voluntary context switches */
    long		ru_nivcsw;	/* involuntary context switches */
#define	ru_last		ru_nivcsw
			    /* information filled in for wait3() only */
    long		ru_pc;		/* final child program counter */
};

/*
 *  resource limits
 */
#define	RLIMIT_CPU	0		/* cpu time in milliseconds */
#define	RLIMIT_FSIZE	1		/* maximum file size */
#define	RLIMIT_DATA	2		/* data size */
#define	RLIMIT_STACK	3		/* stack size */
#define	RLIMIT_CORE	4		/* core file size */
#define	RLIMIT_RSS	5		/* resident set size */
#define	RLIMIT_ABORTS	6		/* max # of transaction restarts */

#define	RLIM_NLIMITS	7		/* number of resource limits */

#define	RLIM_INFINITY	0x7fffffff

struct rlimit
{
    int		rlim_cur;		/* current (soft) limit */
    int		rlim_max;		/* maximum value for rlim_cur */
};

#endif _RESOURCE_
