1 #ifndef RLIMITS_OPTCS 2 #if defined(RLIMITS_DEFNS) 3 __RCSID("$MirOS: src/bin/mksh/rlimits.opt,v 1.1 2013/11/17 22:21:18 tg Exp $"); 4 struct limits { 5 /* limit resource */ 6 int resource; 7 /* multiply by to get rlim_{cur,max} values */ 8 unsigned int factor; 9 /* getopts char */ 10 char optchar; 11 /* limit name */ 12 char name[1]; 13 }; 14 #define FN(lname,lid,lfac,lopt) static const struct { int resource; unsigned int factor; char optchar; char name[sizeof(lname)]; } rlimits_ ## lid = { lid, lfac, lopt, lname }; 15 #elif defined(RLIMITS_ITEMS) 16 #define FN(lname,lid,lfac,lopt) (const struct limits *)(&rlimits_ ## lid), 17 #endif 18 #ifndef F0 19 #define F0 FN 20 #endif 21 #ifdef RLIMIT_CPU 22 FN("time(cpu-seconds)", RLIMIT_CPU, 1, 't') 23 #endif 24 #ifdef RLIMIT_FSIZE 25 FN("file(blocks)", RLIMIT_FSIZE, 512, 'f') 26 #endif 27 #ifdef RLIMIT_CORE 28 FN("coredump(blocks)", RLIMIT_CORE, 512, 'c') 29 #endif 30 #ifdef RLIMIT_DATA 31 FN("data(KiB)", RLIMIT_DATA, 1024, 'd') 32 #endif 33 #ifdef RLIMIT_STACK 34 FN("stack(KiB)", RLIMIT_STACK, 1024, 's') 35 #endif 36 #ifdef RLIMIT_MEMLOCK 37 FN("lockedmem(KiB)", RLIMIT_MEMLOCK, 1024, 'l') 38 #endif 39 #ifdef RLIMIT_NOFILE 40 FN("nofiles(descriptors)", RLIMIT_NOFILE, 1, 'n') 41 #endif 42 #ifdef RLIMIT_NPROC 43 FN("processes", RLIMIT_NPROC, 1, 'p') 44 #endif 45 #ifdef RLIMIT_SWAP 46 FN("swap(KiB)", RLIMIT_SWAP, 1024, 'w') 47 #endif 48 #ifdef RLIMIT_TIME 49 FN("humantime(seconds)", RLIMIT_TIME, 1, 'T') 50 #endif 51 #ifdef RLIMIT_NOVMON 52 FN("vnodemonitors", RLIMIT_NOVMON, 1, 'V') 53 #endif 54 #ifdef RLIMIT_SIGPENDING 55 FN("sigpending", RLIMIT_SIGPENDING, 1, 'i') 56 #endif 57 #ifdef RLIMIT_MSGQUEUE 58 FN("msgqueue(bytes)", RLIMIT_MSGQUEUE, 1, 'q') 59 #endif 60 #ifdef RLIMIT_AIO_MEM 61 FN("AIOlockedmem(KiB)", RLIMIT_AIO_MEM, 1024, 'M') 62 #endif 63 #ifdef RLIMIT_AIO_OPS 64 FN("AIOoperations", RLIMIT_AIO_OPS, 1, 'O') 65 #endif 66 #ifdef RLIMIT_TCACHE 67 FN("cachedthreads", RLIMIT_TCACHE, 1, 'C') 68 #endif 69 #ifdef RLIMIT_SBSIZE 70 FN("sockbufsiz(KiB)", RLIMIT_SBSIZE, 1024, 'B') 71 #endif 72 #ifdef RLIMIT_PTHREAD 73 FN("threadsperprocess", RLIMIT_PTHREAD, 1, 'P') 74 #endif 75 #ifdef RLIMIT_NICE 76 FN("maxnice", RLIMIT_NICE, 1, 'e') 77 #endif 78 #ifdef RLIMIT_RTPRIO 79 FN("maxrtprio", RLIMIT_RTPRIO, 1, 'r') 80 #endif 81 #ifdef ULIMIT_M_IS_RSS 82 FN("resident-set(KiB)", RLIMIT_RSS, 1024, 'm') 83 #endif 84 #ifdef ULIMIT_M_IS_VMEM 85 FN("memory(KiB)", RLIMIT_VMEM, 1024, 'm') 86 #endif 87 #ifdef ULIMIT_V_IS_VMEM 88 FN("virtual-memory(KiB)", RLIMIT_VMEM, 1024, 'v') 89 #endif 90 #ifdef ULIMIT_V_IS_AS 91 FN("address-space(KiB)", RLIMIT_AS, 1024, 'v') 92 #endif 93 #undef F0 94 #undef FN 95 #undef RLIMITS_DEFNS 96 #undef RLIMITS_ITEMS 97 #else 98 "a" 99 #ifdef RLIMIT_SBSIZE 100 "B" 101 #endif 102 #ifdef RLIMIT_TCACHE 103 "C" 104 #endif 105 #ifdef RLIMIT_CORE 106 "c" 107 #endif 108 #ifdef RLIMIT_DATA 109 "d" 110 #endif 111 #ifdef RLIMIT_NICE 112 "e" 113 #endif 114 #ifdef RLIMIT_FSIZE 115 "f" 116 #endif 117 "H" 118 #ifdef RLIMIT_SIGPENDING 119 "i" 120 #endif 121 #ifdef RLIMIT_MEMLOCK 122 "l" 123 #endif 124 #ifdef RLIMIT_AIO_MEM 125 "M" 126 #endif 127 #ifdef ULIMIT_M_IS_RSS 128 "m" 129 #endif 130 #ifdef ULIMIT_M_IS_VMEM 131 "m" 132 #endif 133 #ifdef RLIMIT_NOFILE 134 "n" 135 #endif 136 #ifdef RLIMIT_AIO_OPS 137 "O" 138 #endif 139 #ifdef RLIMIT_PTHREAD 140 "P" 141 #endif 142 #ifdef RLIMIT_NPROC 143 "p" 144 #endif 145 #ifdef RLIMIT_MSGQUEUE 146 "q" 147 #endif 148 #ifdef RLIMIT_RTPRIO 149 "r" 150 #endif 151 "S" 152 #ifdef RLIMIT_STACK 153 "s" 154 #endif 155 #ifdef RLIMIT_TIME 156 "T" 157 #endif 158 #ifdef RLIMIT_CPU 159 "t" 160 #endif 161 #ifdef RLIMIT_NOVMON 162 "V" 163 #endif 164 #ifdef ULIMIT_V_IS_AS 165 "v" 166 #endif 167 #ifdef ULIMIT_V_IS_VMEM 168 "v" 169 #endif 170 #ifdef RLIMIT_SWAP 171 "w" 172 #endif 173 #undef RLIMITS_OPTCS 174 #endif 175