blob: 58392d64ba8f0792d29b2302fcb774a62f383214 [file] [log] [blame]
Rich Felker0b44a032011-02-12 00:22:29 -05001#ifndef _SYS_RESOURCE_H
2#define _SYS_RESOURCE_H
3
Rich Felker3ed8c9f2011-11-10 20:40:06 -05004#ifdef __cplusplus
5extern "C" {
6#endif
7
Rich Felkerc1a96582012-09-07 23:13:55 -04008#include <features.h>
Rich Felker9448b052013-07-22 11:22:36 -04009#include <sys/time.h>
Rich Felkerc1a96582012-09-07 23:13:55 -040010
Rich Felker0b44a032011-02-12 00:22:29 -050011#define __NEED_id_t
Rich Felker0b44a032011-02-12 00:22:29 -050012
Rich Felker26f38322012-01-20 22:10:47 -050013#ifdef _GNU_SOURCE
14#define __NEED_pid_t
15#endif
16
Rich Felker0b44a032011-02-12 00:22:29 -050017#include <bits/alltypes.h>
Szabolcs Nagyfcea5342014-04-14 17:42:49 +020018#include <bits/resource.h>
Rich Felker0b44a032011-02-12 00:22:29 -050019
20typedef unsigned long long rlim_t;
21
22struct rlimit
23{
24 rlim_t rlim_cur;
25 rlim_t rlim_max;
26};
27
28struct rusage
29{
30 struct timeval ru_utime;
31 struct timeval ru_stime;
32 /* linux extentions, but useful */
33 long ru_maxrss;
34 long ru_ixrss;
35 long ru_idrss;
36 long ru_isrss;
37 long ru_minflt;
38 long ru_majflt;
39 long ru_nswap;
40 long ru_inblock;
41 long ru_oublock;
42 long ru_msgsnd;
43 long ru_msgrcv;
44 long ru_nsignals;
45 long ru_nvcsw;
46 long ru_nivcsw;
47 /* room for more... */
48 long __reserved[16];
49};
50
51int getrlimit (int, struct rlimit *);
52int setrlimit (int, const struct rlimit *);
53int getrusage (int, struct rusage *);
54
55int getpriority (int, id_t);
56int setpriority (int, id_t, int);
57
Rich Felker26f38322012-01-20 22:10:47 -050058#ifdef _GNU_SOURCE
59int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);
Rich Felkerf6001052012-09-21 04:05:01 -040060#define prlimit64 prlimit
Rich Felker26f38322012-01-20 22:10:47 -050061#endif
62
Szabolcs Nagy90710df2013-09-15 15:32:07 +000063#define PRIO_MIN (-20)
64#define PRIO_MAX 20
65
Rich Felker0b44a032011-02-12 00:22:29 -050066#define PRIO_PROCESS 0
67#define PRIO_PGRP 1
68#define PRIO_USER 2
69
70#define RUSAGE_SELF 0
71#define RUSAGE_CHILDREN 1
72
73#define RLIM_INFINITY (~0ULL)
74#define RLIM_SAVED_CUR RLIM_INFINITY
75#define RLIM_SAVED_MAX RLIM_INFINITY
76
77#define RLIMIT_CPU 0
78#define RLIMIT_FSIZE 1
79#define RLIMIT_DATA 2
80#define RLIMIT_STACK 3
81#define RLIMIT_CORE 4
Szabolcs Nagyfcea5342014-04-14 17:42:49 +020082#ifndef RLIMIT_RSS
Rich Felker0b44a032011-02-12 00:22:29 -050083#define RLIMIT_RSS 5
Rich Felker0b44a032011-02-12 00:22:29 -050084#define RLIMIT_NPROC 6
Szabolcs Nagyfcea5342014-04-14 17:42:49 +020085#define RLIMIT_NOFILE 7
Rich Felker0b44a032011-02-12 00:22:29 -050086#define RLIMIT_MEMLOCK 8
Szabolcs Nagyfcea5342014-04-14 17:42:49 +020087#define RLIMIT_AS 9
88#endif
Rich Felker0b44a032011-02-12 00:22:29 -050089#define RLIMIT_LOCKS 10
Rich Felker209f2bb2011-04-12 11:50:14 -040090#define RLIMIT_SIGPENDING 11
91#define RLIMIT_MSGQUEUE 12
92#define RLIMIT_NICE 13
93#define RLIMIT_RTPRIO 14
94#define RLIMIT_NLIMITS 15
Rich Felker0b44a032011-02-12 00:22:29 -050095
Rich Felker45a32192011-04-13 13:22:19 -040096#define RLIM_NLIMITS RLIMIT_NLIMITS
Rich Felker0b44a032011-02-12 00:22:29 -050097
Rich Felker3b94dab2012-06-04 08:03:56 -040098#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
Rich Felkerf0b85fd2012-05-04 00:31:25 -040099#define getrlimit64 getrlimit
100#define setrlimit64 setrlimit
101#define rlimit64 rlimit
102#define rlim64_t rlim_t
103#endif
Rich Felker0b44a032011-02-12 00:22:29 -0500104
Rich Felker3ed8c9f2011-11-10 20:40:06 -0500105#ifdef __cplusplus
106}
107#endif
108
Rich Felker0b44a032011-02-12 00:22:29 -0500109#endif