1 #ifndef	_SYS_RESOURCE_H
2 #define	_SYS_RESOURCE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <features.h>
9 #include <sys/time.h>
10 
11 #define __NEED_id_t
12 
13 #ifdef _GNU_SOURCE
14 #define __NEED_pid_t
15 #endif
16 
17 #include <bits/alltypes.h>
18 #include <bits/resource.h>
19 
20 typedef unsigned long long rlim_t;
21 
22 struct rlimit {
23 	rlim_t rlim_cur;
24 	rlim_t rlim_max;
25 };
26 
27 struct rusage {
28 	struct timeval ru_utime;
29 	struct timeval ru_stime;
30 	/* linux extentions, but useful */
31 	long	ru_maxrss;
32 	long	ru_ixrss;
33 	long	ru_idrss;
34 	long	ru_isrss;
35 	long	ru_minflt;
36 	long	ru_majflt;
37 	long	ru_nswap;
38 	long	ru_inblock;
39 	long	ru_oublock;
40 	long	ru_msgsnd;
41 	long	ru_msgrcv;
42 	long	ru_nsignals;
43 	long	ru_nvcsw;
44 	long	ru_nivcsw;
45 	/* room for more... */
46 	long    __reserved[16];
47 };
48 
49 int getrlimit (int, struct rlimit *);
50 int setrlimit (int, const struct rlimit *);
51 int getrusage (int, struct rusage *);
52 
53 int getpriority (int, id_t);
54 int setpriority (int, id_t, int);
55 
56 #ifdef _GNU_SOURCE
57 int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);
58 #define prlimit64 prlimit
59 #endif
60 
61 #define PRIO_MIN (-20)
62 #define PRIO_MAX 20
63 
64 #define PRIO_PROCESS 0
65 #define PRIO_PGRP    1
66 #define PRIO_USER    2
67 
68 #define RUSAGE_SELF     0
69 #define RUSAGE_CHILDREN (-1)
70 #define RUSAGE_THREAD   1
71 
72 #define RLIM_INFINITY (~0ULL)
73 #define RLIM_SAVED_CUR RLIM_INFINITY
74 #define RLIM_SAVED_MAX RLIM_INFINITY
75 
76 #define RLIMIT_CPU     0
77 #define RLIMIT_FSIZE   1
78 #define RLIMIT_DATA    2
79 #define RLIMIT_STACK   3
80 #define RLIMIT_CORE    4
81 #ifndef RLIMIT_RSS
82 #define RLIMIT_RSS     5
83 #define RLIMIT_NPROC   6
84 #define RLIMIT_NOFILE  7
85 #define RLIMIT_MEMLOCK 8
86 #define RLIMIT_AS      9
87 #endif
88 #define RLIMIT_LOCKS   10
89 #define RLIMIT_SIGPENDING 11
90 #define RLIMIT_MSGQUEUE 12
91 #define RLIMIT_NICE    13
92 #define RLIMIT_RTPRIO  14
93 #define RLIMIT_RTTIME  15
94 #define RLIMIT_NLIMITS 16
95 
96 #define RLIM_NLIMITS RLIMIT_NLIMITS
97 
98 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
99 #define RLIM64_INFINITY RLIM_INFINITY
100 #define RLIM64_SAVED_CUR RLIM_SAVED_CUR
101 #define RLIM64_SAVED_MAX RLIM_SAVED_MAX
102 #define getrlimit64 getrlimit
103 #define setrlimit64 setrlimit
104 #define rlimit64 rlimit
105 #define rlim64_t rlim_t
106 #endif
107 
108 #if _REDIR_TIME64
109 __REDIR(getrusage, __getrusage_time64);
110 #endif
111 
112 #ifdef __cplusplus
113 }
114 #endif
115 
116 #endif