1 /* vlimit.c 4.1 83/06/20 */ 2 3 /* 4 * (Almost) backwards compatible vlimit. 5 */ 6 #include <sys/resource.h> 7 8 /* LIM_NORAISE is not emulated */ 9 #define LIM_NORAISE 0 /* if <> 0, can't raise limits */ 10 #define LIM_CPU 1 /* max secs cpu time */ 11 #define LIM_FSIZE 2 /* max size of file created */ 12 #define LIM_DATA 3 /* max growth of data space */ 13 #define LIM_STACK 4 /* max growth of stack */ 14 #define LIM_CORE 5 /* max size of ``core'' file */ 15 #define LIM_MAXRSS 6 /* max desired data+stack core usage */ 16 17 #define NLIMITS 6 18 19 vlimit(limit, value) 20 int limit, value; 21 { 22 struct rlimit rlim; 23 24 if (limit <= 0 || limit > NLIMITS) 25 return (EINVAL); 26 if (value == -1) { 27 if (getrlimit(limit - 1, &rlim) < 0) 28 return (-1); 29 return (rlim.rlim_cur); 30 } 31 rlim.rlim_cur = value; 32 rlim.rlim_max = RLIM_INFINITY; 33 return (setrlimit(limit - 1, &rlim)); 34 } 35