1#ifndef _SYS_RESOURCE_H 2#define _SYS_RESOURCE_H 3 4#ifdef __cplusplus 5extern "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 20typedef unsigned long long rlim_t; 21 22struct rlimit { 23 rlim_t rlim_cur; 24 rlim_t rlim_max; 25}; 26 27struct 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 49int getrlimit (int, struct rlimit *); 50int setrlimit (int, const struct rlimit *); 51int getrusage (int, struct rusage *); 52 53int getpriority (int, id_t); 54int setpriority (int, id_t, int); 55 56#ifdef _GNU_SOURCE 57int 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_NLIMITS 15 94 95#define RLIM_NLIMITS RLIMIT_NLIMITS 96 97#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) 98#define RLIM64_INFINITY RLIM_INFINITY 99#define RLIM64_SAVED_CUR RLIM_SAVED_CUR 100#define RLIM64_SAVED_MAX RLIM_SAVED_MAX 101#define getrlimit64 getrlimit 102#define setrlimit64 setrlimit 103#define rlimit64 rlimit 104#define rlim64_t rlim_t 105#endif 106 107#ifdef __cplusplus 108} 109#endif 110 111#endif 112