blob: 0cfbcf44349018614f34b575a749d50e39f06e63 [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>
18
19typedef unsigned long long rlim_t;
20
21struct rlimit
22{
23 rlim_t rlim_cur;
24 rlim_t rlim_max;
25};
26
27struct rusage
28{
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
50int getrlimit (int, struct rlimit *);
51int setrlimit (int, const struct rlimit *);
52int getrusage (int, struct rusage *);
53
54int getpriority (int, id_t);
55int setpriority (int, id_t, int);
56
Rich Felker26f38322012-01-20 22:10:47 -050057#ifdef _GNU_SOURCE
58int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);
Rich Felkerf6001052012-09-21 04:05:01 -040059#define prlimit64 prlimit
Rich Felker26f38322012-01-20 22:10:47 -050060#endif
61
Rich Felker0b44a032011-02-12 00:22:29 -050062#define PRIO_PROCESS 0
63#define PRIO_PGRP 1
64#define PRIO_USER 2
65
66#define RUSAGE_SELF 0
67#define RUSAGE_CHILDREN 1
68
69#define RLIM_INFINITY (~0ULL)
70#define RLIM_SAVED_CUR RLIM_INFINITY
71#define RLIM_SAVED_MAX RLIM_INFINITY
72
73#define RLIMIT_CPU 0
74#define RLIMIT_FSIZE 1
75#define RLIMIT_DATA 2
76#define RLIMIT_STACK 3
77#define RLIMIT_CORE 4
78#define RLIMIT_RSS 5
79#define RLIMIT_NOFILE 7
80#define RLIMIT_AS 9
81#define RLIMIT_NPROC 6
82#define RLIMIT_MEMLOCK 8
83#define RLIMIT_LOCKS 10
Rich Felker209f2bb2011-04-12 11:50:14 -040084#define RLIMIT_SIGPENDING 11
85#define RLIMIT_MSGQUEUE 12
86#define RLIMIT_NICE 13
87#define RLIMIT_RTPRIO 14
88#define RLIMIT_NLIMITS 15
Rich Felker0b44a032011-02-12 00:22:29 -050089
Rich Felker45a32192011-04-13 13:22:19 -040090#define RLIM_NLIMITS RLIMIT_NLIMITS
Rich Felker0b44a032011-02-12 00:22:29 -050091
Rich Felker3b94dab2012-06-04 08:03:56 -040092#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
Rich Felkerf0b85fd2012-05-04 00:31:25 -040093#define getrlimit64 getrlimit
94#define setrlimit64 setrlimit
95#define rlimit64 rlimit
96#define rlim64_t rlim_t
97#endif
Rich Felker0b44a032011-02-12 00:22:29 -050098
Rich Felker3ed8c9f2011-11-10 20:40:06 -050099#ifdef __cplusplus
100}
101#endif
102
Rich Felker0b44a032011-02-12 00:22:29 -0500103#endif