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