Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


resource.h
001: /* Bit values & structures for resource limits.  Linux version.
002:    Copyright (C) 1994, 1996-2000, 2004, 2005, 2008, 2009, 2010, 2011
003:    Free Software Foundation, Inc.
004:    This file is part of the GNU C Library.
005: 
006:    The GNU C Library is free software; you can redistribute it and/or
007:    modify it under the terms of the GNU Lesser General Public
008:    License as published by the Free Software Foundation; either
009:    version 2.1 of the License, or (at your option) any later version.
010: 
011:    The GNU C Library is distributed in the hope that it will be useful,
012:    but WITHOUT ANY WARRANTY; without even the implied warranty of
013:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014:    Lesser General Public License for more details.
015: 
016:    You should have received a copy of the GNU Lesser General Public
017:    License along with the GNU C Library; if not, write to the Free
018:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
019:    02111-1307 USA.  */
020: 
021: #ifndef _SYS_RESOURCE_H
022: # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
023: #endif
024: 
025: #include <bits/types.h>
026: 
027: /* Transmute defines to enumerations.  The macro re-definitions are
028:    necessary because some programs want to test for operating system
029:    features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
030:    definition is a no-op.  */
031: 
032: /* Kinds of resource limit.  */
033: enum __rlimit_resource
034: {
035:   /* Per-process CPU limit, in seconds.  */
036:   RLIMIT_CPU = 0,
037: #define RLIMIT_CPU RLIMIT_CPU
038: 
039:   /* Largest file that can be created, in bytes.  */
040:   RLIMIT_FSIZE = 1,
041: #define RLIMIT_FSIZE RLIMIT_FSIZE
042: 
043:   /* Maximum size of data segment, in bytes.  */
044:   RLIMIT_DATA = 2,
045: #define RLIMIT_DATA RLIMIT_DATA
046: 
047:   /* Maximum size of stack segment, in bytes.  */
048:   RLIMIT_STACK = 3,
049: #define RLIMIT_STACK RLIMIT_STACK
050: 
051:   /* Largest core file that can be created, in bytes.  */
052:   RLIMIT_CORE = 4,
053: #define RLIMIT_CORE RLIMIT_CORE
054: 
055:   /* Largest resident set size, in bytes.
056:      This affects swapping; processes that are exceeding their
057:      resident set size will be more likely to have physical memory
058:      taken from them.  */
059:   __RLIMIT_RSS = 5,
060: #define RLIMIT_RSS __RLIMIT_RSS
061: 
062:   /* Number of open files.  */
063:   RLIMIT_NOFILE = 7,
064:   __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
065: #define RLIMIT_NOFILE RLIMIT_NOFILE
066: #define RLIMIT_OFILE __RLIMIT_OFILE
067: 
068:   /* Address space limit.  */
069:   RLIMIT_AS = 9,
070: #define RLIMIT_AS RLIMIT_AS
071: 
072:   /* Number of processes.  */
073:   __RLIMIT_NPROC = 6,
074: #define RLIMIT_NPROC __RLIMIT_NPROC
075: 
076:   /* Locked-in-memory address space.  */
077:   __RLIMIT_MEMLOCK = 8,
078: #define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
079: 
080:   /* Maximum number of file locks.  */
081:   __RLIMIT_LOCKS = 10,
082: #define RLIMIT_LOCKS __RLIMIT_LOCKS
083: 
084:   /* Maximum number of pending signals.  */
085:   __RLIMIT_SIGPENDING = 11,
086: #define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING
087: 
088:   /* Maximum bytes in POSIX message queues.  */
089:   __RLIMIT_MSGQUEUE = 12,
090: #define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE
091: 
092:   /* Maximum nice priority allowed to raise to.
093:      Nice levels 19 .. -20 correspond to 0 .. 39
094:      values of this resource limit.  */
095:   __RLIMIT_NICE = 13,
096: #define RLIMIT_NICE __RLIMIT_NICE
097: 
098:   /* Maximum realtime priority allowed for non-priviledged
099:      processes.  */
100:   __RLIMIT_RTPRIO = 14,
101: #define RLIMIT_RTPRIO __RLIMIT_RTPRIO
102: 
103:   /* Maximum CPU time in µs that a process scheduled under a real-time
104:      scheduling policy may consume without making a blocking system
105:      call before being forcibly descheduled.  */
106:   __RLIMIT_RTTIME = 15,
107: #define RLIMIT_RTTIME __RLIMIT_RTTIME
108: 
109:   __RLIMIT_NLIMITS = 16,
110:   __RLIM_NLIMITS = __RLIMIT_NLIMITS
111: #define RLIMIT_NLIMITS __RLIMIT_NLIMITS
112: #define RLIM_NLIMITS __RLIM_NLIMITS
113: };
114: 
115: /* Value to indicate that there is no limit.  */
116: #ifndef __USE_FILE_OFFSET64
117: # define RLIM_INFINITY ((unsigned long int)(~0UL))
118: #else
119: # define RLIM_INFINITY 0xffffffffffffffffuLL
120: #endif
121: 
122: #ifdef __USE_LARGEFILE64
123: # define RLIM64_INFINITY 0xffffffffffffffffuLL
124: #endif
125: 
126: /* We can represent all limits.  */
127: #define RLIM_SAVED_MAX  RLIM_INFINITY
128: #define RLIM_SAVED_CUR  RLIM_INFINITY
129: 
130: 
131: /* Type for resource quantity measurement.  */
132: #ifndef __USE_FILE_OFFSET64
133: typedef __rlim_t rlim_t;
134: #else
135: typedef __rlim64_t rlim_t;
136: #endif
137: #ifdef __USE_LARGEFILE64
138: typedef __rlim64_t rlim64_t;
139: #endif
140: 
141: struct rlimit
142:   {
143:     /* The current (soft) limit.  */
144:     rlim_t rlim_cur;
145:     /* The hard limit.  */
146:     rlim_t rlim_max;
147:   };
148: 
149: #ifdef __USE_LARGEFILE64
150: struct rlimit64
151:   {
152:     /* The current (soft) limit.  */
153:     rlim64_t rlim_cur;
154:     /* The hard limit.  */
155:     rlim64_t rlim_max;
156:  };
157: #endif
158: 
159: /* Whose usage statistics do you want?  */
160: enum __rusage_who
161: {
162:   /* The calling process.  */
163:   RUSAGE_SELF = 0,
164: #define RUSAGE_SELF RUSAGE_SELF
165: 
166:   /* All of its terminated child processes.  */
167:   RUSAGE_CHILDREN = -1
168: #define RUSAGE_CHILDREN RUSAGE_CHILDREN
169: 
170: #ifdef __USE_GNU
171:   ,
172:   /* The calling thread.  */
173:   RUSAGE_THREAD = 1
174: # define RUSAGE_THREAD RUSAGE_THREAD
175:   /* Name for the same functionality on Solaris.  */
176: # define RUSAGE_LWP RUSAGE_THREAD
177: #endif
178: };
179: 
180: #define __need_timeval
181: #include <bits/time.h>          /* For `struct timeval'.  */
182: 
183: /* Structure which says how much of each resource has been used.  */
184: struct rusage
185:   {
186:     /* Total amount of user time used.  */
187:     struct timeval ru_utime;
188:     /* Total amount of system time used.  */
189:     struct timeval ru_stime;
190:     /* Maximum resident set size (in kilobytes).  */
191:     long int ru_maxrss;
192:     /* Amount of sharing of text segment memory
193:        with other processes (kilobyte-seconds).  */
194:     long int ru_ixrss;
195:     /* Amount of data segment memory used (kilobyte-seconds).  */
196:     long int ru_idrss;
197:     /* Amount of stack memory used (kilobyte-seconds).  */
198:     long int ru_isrss;
199:     /* Number of soft page faults (i.e. those serviced by reclaiming
200:        a page from the list of pages awaiting reallocation.  */
201:     long int ru_minflt;
202:     /* Number of hard page faults (i.e. those that required I/O).  */
203:     long int ru_majflt;
204:     /* Number of times a process was swapped out of physical memory.  */
205:     long int ru_nswap;
206:     /* Number of input operations via the file system.  Note: This
207:        and `ru_oublock' do not include operations with the cache.  */
208:     long int ru_inblock;
209:     /* Number of output operations via the file system.  */
210:     long int ru_oublock;
211:     /* Number of IPC messages sent.  */
212:     long int ru_msgsnd;
213:     /* Number of IPC messages received.  */
214:     long int ru_msgrcv;
215:     /* Number of signals delivered.  */
216:     long int ru_nsignals;
217:     /* Number of voluntary context switches, i.e. because the process
218:        gave up the process before it had to (usually to wait for some
219:        resource to be available).  */
220:     long int ru_nvcsw;
221:     /* Number of involuntary context switches, i.e. a higher priority process
222:        became runnable or the current process used up its time slice.  */
223:     long int ru_nivcsw;
224:   };
225: 
226: /* Priority limits.  */
227: #define PRIO_MIN        -20     /* Minimum priority a process can have.  */
228: #define PRIO_MAX        20      /* Maximum priority a process can have.  */
229: 
230: /* The type of the WHICH argument to `getpriority' and `setpriority',
231:    indicating what flavor of entity the WHO argument specifies.  */
232: enum __priority_which
233: {
234:   PRIO_PROCESS = 0,             /* WHO is a process ID.  */
235: #define PRIO_PROCESS PRIO_PROCESS
236:   PRIO_PGRP = 1,                /* WHO is a process group ID.  */
237: #define PRIO_PGRP PRIO_PGRP
238:   PRIO_USER = 2                 /* WHO is a user ID.  */
239: #define PRIO_USER PRIO_USER
240: };
241: 
242: 
243: __BEGIN_DECLS
244: 
245: #ifdef __USE_GNU
246: /* Modify and return resource limits of a process atomically.  */
247: # ifndef __USE_FILE_OFFSET64
248: extern int prlimit (__pid_t __pid, enum __rlimit_resource __resource,
249:                     __const struct rlimit *__new_limit,
250:                     struct rlimit *__old_limit) __THROW;
251: # else
252: #  ifdef __REDIRECT_NTH
253: extern int __REDIRECT_NTH (prlimit, (__pid_t __pid,
254:                                      enum __rlimit_resource __resource,
255:                                      __const struct rlimit *__new_limit,
256:                                      struct rlimit *__old_limit), prlimit64);
257: #  else
258: #   define prlimit prlimit64
259: #  endif
260: # endif
261: # ifdef __USE_LARGEFILE64
262: extern int prlimit64 (__pid_t __pid, enum __rlimit_resource __resource,
263:                       __const struct rlimit64 *__new_limit,
264:                       struct rlimit64 *__old_limit) __THROW;
265: # endif
266: #endif
267: 
268: __END_DECLS
269: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/