resource.h 1.9 KB
Newer Older
R
Rich Felker 已提交
1 2 3
#ifndef	_SYS_RESOURCE_H
#define	_SYS_RESOURCE_H

4 5 6 7
#ifdef __cplusplus
extern "C" {
#endif

8
#include <features.h>
9
#include <sys/time.h>
10

R
Rich Felker 已提交
11 12
#define __NEED_id_t

R
Rich Felker 已提交
13 14 15 16
#ifdef _GNU_SOURCE
#define __NEED_pid_t
#endif

R
Rich Felker 已提交
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
#include <bits/alltypes.h>

typedef unsigned long long rlim_t;

struct rlimit
{
	rlim_t rlim_cur;
	rlim_t rlim_max;
};

struct rusage
{
	struct timeval ru_utime;
	struct timeval ru_stime;
	/* linux extentions, but useful */
	long	ru_maxrss;
	long	ru_ixrss;
	long	ru_idrss;
	long	ru_isrss;
	long	ru_minflt;
	long	ru_majflt;
	long	ru_nswap;
	long	ru_inblock;
	long	ru_oublock;
	long	ru_msgsnd;
	long	ru_msgrcv;
	long	ru_nsignals;
	long	ru_nvcsw;
	long	ru_nivcsw;
	/* room for more... */
	long    __reserved[16];
};

int getrlimit (int, struct rlimit *);
int setrlimit (int, const struct rlimit *);
int getrusage (int, struct rusage *);

int getpriority (int, id_t);
int setpriority (int, id_t, int);

R
Rich Felker 已提交
57 58
#ifdef _GNU_SOURCE
int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);
R
Rich Felker 已提交
59
#define prlimit64 prlimit
R
Rich Felker 已提交
60 61
#endif

62 63 64
#define PRIO_MIN (-20)
#define PRIO_MAX 20

R
Rich Felker 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
#define PRIO_PROCESS 0
#define PRIO_PGRP    1
#define PRIO_USER    2

#define RUSAGE_SELF     0
#define RUSAGE_CHILDREN 1

#define RLIM_INFINITY (~0ULL)
#define RLIM_SAVED_CUR RLIM_INFINITY
#define RLIM_SAVED_MAX RLIM_INFINITY

#define RLIMIT_CPU     0
#define RLIMIT_FSIZE   1
#define RLIMIT_DATA    2
#define RLIMIT_STACK   3
#define RLIMIT_CORE    4
#define RLIMIT_RSS     5
#define RLIMIT_NOFILE  7
#define RLIMIT_AS      9
#define RLIMIT_NPROC   6
#define RLIMIT_MEMLOCK 8
#define RLIMIT_LOCKS   10
R
Rich Felker 已提交
87 88 89 90 91
#define RLIMIT_SIGPENDING 11
#define RLIMIT_MSGQUEUE 12
#define RLIMIT_NICE    13
#define RLIMIT_RTPRIO  14
#define RLIMIT_NLIMITS 15
R
Rich Felker 已提交
92

93
#define RLIM_NLIMITS RLIMIT_NLIMITS
R
Rich Felker 已提交
94

95
#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
R
Rich Felker 已提交
96 97 98 99 100
#define getrlimit64 getrlimit
#define setrlimit64 setrlimit
#define rlimit64 rlimit
#define rlim64_t rlim_t
#endif
R
Rich Felker 已提交
101

102 103 104 105
#ifdef __cplusplus
}
#endif

R
Rich Felker 已提交
106
#endif