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