xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/bits/resource.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* Bit values & structures for resource limits.  Linux/MIPS version.
2*53ee8cc1Swenshuai.xi    Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2006
3*53ee8cc1Swenshuai.xi    Free Software Foundation, Inc.
4*53ee8cc1Swenshuai.xi    This file is part of the GNU C Library.
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi    The GNU C Library is free software; you can redistribute it and/or
7*53ee8cc1Swenshuai.xi    modify it under the terms of the GNU Lesser General Public
8*53ee8cc1Swenshuai.xi    License as published by the Free Software Foundation; either
9*53ee8cc1Swenshuai.xi    version 2.1 of the License, or (at your option) any later version.
10*53ee8cc1Swenshuai.xi 
11*53ee8cc1Swenshuai.xi    The GNU C Library is distributed in the hope that it will be useful,
12*53ee8cc1Swenshuai.xi    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*53ee8cc1Swenshuai.xi    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14*53ee8cc1Swenshuai.xi    Lesser General Public License for more details.
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi    You should have received a copy of the GNU Lesser General Public
17*53ee8cc1Swenshuai.xi    License along with the GNU C Library; if not, write to the Free
18*53ee8cc1Swenshuai.xi    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19*53ee8cc1Swenshuai.xi    02111-1307 USA.  */
20*53ee8cc1Swenshuai.xi 
21*53ee8cc1Swenshuai.xi #ifndef _SYS_RESOURCE_H
22*53ee8cc1Swenshuai.xi # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
23*53ee8cc1Swenshuai.xi #endif
24*53ee8cc1Swenshuai.xi 
25*53ee8cc1Swenshuai.xi #include <bits/types.h>
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi /* Transmute defines to enumerations.  The macro re-definitions are
28*53ee8cc1Swenshuai.xi    necessary because some programs want to test for operating system
29*53ee8cc1Swenshuai.xi    features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
30*53ee8cc1Swenshuai.xi    definition is a no-op.  */
31*53ee8cc1Swenshuai.xi 
32*53ee8cc1Swenshuai.xi /* Kinds of resource limit.  */
33*53ee8cc1Swenshuai.xi enum __rlimit_resource
34*53ee8cc1Swenshuai.xi {
35*53ee8cc1Swenshuai.xi   /* Per-process CPU limit, in seconds.  */
36*53ee8cc1Swenshuai.xi   RLIMIT_CPU = 0,
37*53ee8cc1Swenshuai.xi #define RLIMIT_CPU RLIMIT_CPU
38*53ee8cc1Swenshuai.xi 
39*53ee8cc1Swenshuai.xi   /* Largest file that can be created, in bytes.  */
40*53ee8cc1Swenshuai.xi   RLIMIT_FSIZE = 1,
41*53ee8cc1Swenshuai.xi #define	RLIMIT_FSIZE RLIMIT_FSIZE
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi   /* Maximum size of data segment, in bytes.  */
44*53ee8cc1Swenshuai.xi   RLIMIT_DATA = 2,
45*53ee8cc1Swenshuai.xi #define	RLIMIT_DATA RLIMIT_DATA
46*53ee8cc1Swenshuai.xi 
47*53ee8cc1Swenshuai.xi   /* Maximum size of stack segment, in bytes.  */
48*53ee8cc1Swenshuai.xi   RLIMIT_STACK = 3,
49*53ee8cc1Swenshuai.xi #define	RLIMIT_STACK RLIMIT_STACK
50*53ee8cc1Swenshuai.xi 
51*53ee8cc1Swenshuai.xi   /* Largest core file that can be created, in bytes.  */
52*53ee8cc1Swenshuai.xi   RLIMIT_CORE = 4,
53*53ee8cc1Swenshuai.xi #define	RLIMIT_CORE RLIMIT_CORE
54*53ee8cc1Swenshuai.xi 
55*53ee8cc1Swenshuai.xi   /* Largest resident set size, in bytes.
56*53ee8cc1Swenshuai.xi      This affects swapping; processes that are exceeding their
57*53ee8cc1Swenshuai.xi      resident set size will be more likely to have physical memory
58*53ee8cc1Swenshuai.xi      taken from them.  */
59*53ee8cc1Swenshuai.xi   __RLIMIT_RSS = 7,
60*53ee8cc1Swenshuai.xi #define	RLIMIT_RSS __RLIMIT_RSS
61*53ee8cc1Swenshuai.xi 
62*53ee8cc1Swenshuai.xi   /* Number of open files.  */
63*53ee8cc1Swenshuai.xi   RLIMIT_NOFILE = 5,
64*53ee8cc1Swenshuai.xi   __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
65*53ee8cc1Swenshuai.xi #define RLIMIT_NOFILE RLIMIT_NOFILE
66*53ee8cc1Swenshuai.xi #define RLIMIT_OFILE __RLIMIT_OFILE
67*53ee8cc1Swenshuai.xi 
68*53ee8cc1Swenshuai.xi   /* Address space limit (?) */
69*53ee8cc1Swenshuai.xi   RLIMIT_AS = 6,
70*53ee8cc1Swenshuai.xi #define RLIMIT_AS RLIMIT_AS
71*53ee8cc1Swenshuai.xi 
72*53ee8cc1Swenshuai.xi   /* Number of processes.  */
73*53ee8cc1Swenshuai.xi   __RLIMIT_NPROC = 8,
74*53ee8cc1Swenshuai.xi #define RLIMIT_NPROC __RLIMIT_NPROC
75*53ee8cc1Swenshuai.xi 
76*53ee8cc1Swenshuai.xi   /* Locked-in-memory address space.  */
77*53ee8cc1Swenshuai.xi   __RLIMIT_MEMLOCK = 9,
78*53ee8cc1Swenshuai.xi #define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi   /* Maximum number of file locks.  */
81*53ee8cc1Swenshuai.xi   __RLIMIT_LOCKS = 10,
82*53ee8cc1Swenshuai.xi #define RLIMIT_LOCKS __RLIMIT_LOCKS
83*53ee8cc1Swenshuai.xi 
84*53ee8cc1Swenshuai.xi   /* Maximum number of pending signals.  */
85*53ee8cc1Swenshuai.xi   __RLIMIT_SIGPENDING = 11,
86*53ee8cc1Swenshuai.xi #define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING
87*53ee8cc1Swenshuai.xi 
88*53ee8cc1Swenshuai.xi   /* Maximum bytes in POSIX message queues.  */
89*53ee8cc1Swenshuai.xi   __RLIMIT_MSGQUEUE = 12,
90*53ee8cc1Swenshuai.xi #define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE
91*53ee8cc1Swenshuai.xi 
92*53ee8cc1Swenshuai.xi   /* Maximum nice priority allowed to raise to.
93*53ee8cc1Swenshuai.xi      Nice levels 19 .. -20 correspond to 0 .. 39
94*53ee8cc1Swenshuai.xi      values of this resource limit.  */
95*53ee8cc1Swenshuai.xi   __RLIMIT_NICE = 13,
96*53ee8cc1Swenshuai.xi #define RLIMIT_NICE __RLIMIT_NICE
97*53ee8cc1Swenshuai.xi 
98*53ee8cc1Swenshuai.xi   /* Maximum realtime priority allowed for non-priviledged
99*53ee8cc1Swenshuai.xi      processes.  */
100*53ee8cc1Swenshuai.xi   __RLIMIT_RTPRIO = 14,
101*53ee8cc1Swenshuai.xi #define RLIMIT_RTPRIO __RLIMIT_RTPRIO
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi   __RLIMIT_NLIMITS = 15,
104*53ee8cc1Swenshuai.xi   __RLIM_NLIMITS = __RLIMIT_NLIMITS
105*53ee8cc1Swenshuai.xi #define RLIMIT_NLIMITS __RLIMIT_NLIMITS
106*53ee8cc1Swenshuai.xi #define RLIM_NLIMITS __RLIM_NLIMITS
107*53ee8cc1Swenshuai.xi };
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi /* Value to indicate that there is no limit.  */
110*53ee8cc1Swenshuai.xi #if _MIPS_SIM == _ABI64
111*53ee8cc1Swenshuai.xi /* The N64 syscall uses this value.  */
112*53ee8cc1Swenshuai.xi # define RLIM_INFINITY 0xffffffffffffffffUL
113*53ee8cc1Swenshuai.xi # ifdef __USE_LARGEFILE64
114*53ee8cc1Swenshuai.xi #  define RLIM64_INFINITY 0xffffffffffffffffUL
115*53ee8cc1Swenshuai.xi # endif
116*53ee8cc1Swenshuai.xi #else
117*53ee8cc1Swenshuai.xi /* The O32 and N32 syscalls use 0x7fffffff.  */
118*53ee8cc1Swenshuai.xi # ifndef __USE_FILE_OFFSET64
119*53ee8cc1Swenshuai.xi #  define RLIM_INFINITY ((long int)(~0UL >> 1))
120*53ee8cc1Swenshuai.xi # else
121*53ee8cc1Swenshuai.xi #  define RLIM_INFINITY 0x7fffffffffffffffULL
122*53ee8cc1Swenshuai.xi # endif
123*53ee8cc1Swenshuai.xi # ifdef __USE_LARGEFILE64
124*53ee8cc1Swenshuai.xi #  define RLIM64_INFINITY 0x7fffffffffffffffULL
125*53ee8cc1Swenshuai.xi # endif
126*53ee8cc1Swenshuai.xi #endif
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi /* We can represent all limits.  */
129*53ee8cc1Swenshuai.xi #define RLIM_SAVED_MAX	RLIM_INFINITY
130*53ee8cc1Swenshuai.xi #define RLIM_SAVED_CUR	RLIM_INFINITY
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi /* Type for resource quantity measurement.  */
134*53ee8cc1Swenshuai.xi #ifndef __USE_FILE_OFFSET64
135*53ee8cc1Swenshuai.xi typedef __rlim_t rlim_t;
136*53ee8cc1Swenshuai.xi #else
137*53ee8cc1Swenshuai.xi typedef __rlim64_t rlim_t;
138*53ee8cc1Swenshuai.xi #endif
139*53ee8cc1Swenshuai.xi #ifdef __USE_LARGEFILE64
140*53ee8cc1Swenshuai.xi typedef __rlim64_t rlim64_t;
141*53ee8cc1Swenshuai.xi #endif
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi struct rlimit
144*53ee8cc1Swenshuai.xi   {
145*53ee8cc1Swenshuai.xi     /* The current (soft) limit.  */
146*53ee8cc1Swenshuai.xi     rlim_t rlim_cur;
147*53ee8cc1Swenshuai.xi     /* The hard limit.  */
148*53ee8cc1Swenshuai.xi     rlim_t rlim_max;
149*53ee8cc1Swenshuai.xi   };
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi #ifdef __USE_LARGEFILE64
152*53ee8cc1Swenshuai.xi struct rlimit64
153*53ee8cc1Swenshuai.xi   {
154*53ee8cc1Swenshuai.xi     /* The current (soft) limit.  */
155*53ee8cc1Swenshuai.xi     rlim64_t rlim_cur;
156*53ee8cc1Swenshuai.xi     /* The hard limit.  */
157*53ee8cc1Swenshuai.xi     rlim64_t rlim_max;
158*53ee8cc1Swenshuai.xi  };
159*53ee8cc1Swenshuai.xi #endif
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi /* Whose usage statistics do you want?  */
162*53ee8cc1Swenshuai.xi enum __rusage_who
163*53ee8cc1Swenshuai.xi {
164*53ee8cc1Swenshuai.xi   /* The calling process.  */
165*53ee8cc1Swenshuai.xi   RUSAGE_SELF = 0,
166*53ee8cc1Swenshuai.xi #define RUSAGE_SELF RUSAGE_SELF
167*53ee8cc1Swenshuai.xi 
168*53ee8cc1Swenshuai.xi   /* All of its terminated child processes.  */
169*53ee8cc1Swenshuai.xi   RUSAGE_CHILDREN = -1
170*53ee8cc1Swenshuai.xi #define RUSAGE_CHILDREN RUSAGE_CHILDREN
171*53ee8cc1Swenshuai.xi };
172*53ee8cc1Swenshuai.xi 
173*53ee8cc1Swenshuai.xi #define __need_timeval
174*53ee8cc1Swenshuai.xi #include <bits/time.h>		/* For `struct timeval'.  */
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi /* Structure which says how much of each resource has been used.  */
177*53ee8cc1Swenshuai.xi struct rusage
178*53ee8cc1Swenshuai.xi   {
179*53ee8cc1Swenshuai.xi     /* Total amount of user time used.  */
180*53ee8cc1Swenshuai.xi     struct timeval ru_utime;
181*53ee8cc1Swenshuai.xi     /* Total amount of system time used.  */
182*53ee8cc1Swenshuai.xi     struct timeval ru_stime;
183*53ee8cc1Swenshuai.xi     /* Maximum resident set size (in kilobytes).  */
184*53ee8cc1Swenshuai.xi     long int ru_maxrss;
185*53ee8cc1Swenshuai.xi     /* Amount of sharing of text segment memory
186*53ee8cc1Swenshuai.xi        with other processes (kilobyte-seconds).  */
187*53ee8cc1Swenshuai.xi     long int ru_ixrss;
188*53ee8cc1Swenshuai.xi     /* Amount of data segment memory used (kilobyte-seconds).  */
189*53ee8cc1Swenshuai.xi     long int ru_idrss;
190*53ee8cc1Swenshuai.xi     /* Amount of stack memory used (kilobyte-seconds).  */
191*53ee8cc1Swenshuai.xi     long int ru_isrss;
192*53ee8cc1Swenshuai.xi     /* Number of soft page faults (i.e. those serviced by reclaiming
193*53ee8cc1Swenshuai.xi        a page from the list of pages awaiting reallocation.  */
194*53ee8cc1Swenshuai.xi     long int ru_minflt;
195*53ee8cc1Swenshuai.xi     /* Number of hard page faults (i.e. those that required I/O).  */
196*53ee8cc1Swenshuai.xi     long int ru_majflt;
197*53ee8cc1Swenshuai.xi     /* Number of times a process was swapped out of physical memory.  */
198*53ee8cc1Swenshuai.xi     long int ru_nswap;
199*53ee8cc1Swenshuai.xi     /* Number of input operations via the file system.  Note: This
200*53ee8cc1Swenshuai.xi        and `ru_oublock' do not include operations with the cache.  */
201*53ee8cc1Swenshuai.xi     long int ru_inblock;
202*53ee8cc1Swenshuai.xi     /* Number of output operations via the file system.  */
203*53ee8cc1Swenshuai.xi     long int ru_oublock;
204*53ee8cc1Swenshuai.xi     /* Number of IPC messages sent.  */
205*53ee8cc1Swenshuai.xi     long int ru_msgsnd;
206*53ee8cc1Swenshuai.xi     /* Number of IPC messages received.  */
207*53ee8cc1Swenshuai.xi     long int ru_msgrcv;
208*53ee8cc1Swenshuai.xi     /* Number of signals delivered.  */
209*53ee8cc1Swenshuai.xi     long int ru_nsignals;
210*53ee8cc1Swenshuai.xi     /* Number of voluntary context switches, i.e. because the process
211*53ee8cc1Swenshuai.xi        gave up the process before it had to (usually to wait for some
212*53ee8cc1Swenshuai.xi        resource to be available).  */
213*53ee8cc1Swenshuai.xi     long int ru_nvcsw;
214*53ee8cc1Swenshuai.xi     /* Number of involuntary context switches, i.e. a higher priority process
215*53ee8cc1Swenshuai.xi        became runnable or the current process used up its time slice.  */
216*53ee8cc1Swenshuai.xi     long int ru_nivcsw;
217*53ee8cc1Swenshuai.xi   };
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi /* Priority limits.  */
220*53ee8cc1Swenshuai.xi #define PRIO_MIN	-20	/* Minimum priority a process can have.  */
221*53ee8cc1Swenshuai.xi #define PRIO_MAX	20	/* Maximum priority a process can have.  */
222*53ee8cc1Swenshuai.xi 
223*53ee8cc1Swenshuai.xi /* The type of the WHICH argument to `getpriority' and `setpriority',
224*53ee8cc1Swenshuai.xi    indicating what flavor of entity the WHO argument specifies.  */
225*53ee8cc1Swenshuai.xi enum __priority_which
226*53ee8cc1Swenshuai.xi {
227*53ee8cc1Swenshuai.xi   PRIO_PROCESS = 0,		/* WHO is a process ID.  */
228*53ee8cc1Swenshuai.xi #define PRIO_PROCESS PRIO_PROCESS
229*53ee8cc1Swenshuai.xi   PRIO_PGRP = 1,		/* WHO is a process group ID.  */
230*53ee8cc1Swenshuai.xi #define PRIO_PGRP PRIO_PGRP
231*53ee8cc1Swenshuai.xi   PRIO_USER = 2			/* WHO is a user ID.  */
232*53ee8cc1Swenshuai.xi #define PRIO_USER PRIO_USER
233*53ee8cc1Swenshuai.xi };
234