1*4887Schin /*********************************************************************** 2*4887Schin * * 3*4887Schin * This software is part of the ast package * 4*4887Schin * Copyright (c) 1982-2007 AT&T Knowledge Ventures * 5*4887Schin * and is licensed under the * 6*4887Schin * Common Public License, Version 1.0 * 7*4887Schin * by AT&T Knowledge Ventures * 8*4887Schin * * 9*4887Schin * A copy of the License is available at * 10*4887Schin * http://www.opensource.org/licenses/cpl1.0.txt * 11*4887Schin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12*4887Schin * * 13*4887Schin * Information and Software Systems Research * 14*4887Schin * AT&T Research * 15*4887Schin * Florham Park NJ * 16*4887Schin * * 17*4887Schin * David Korn <dgk@research.att.com> * 18*4887Schin * * 19*4887Schin ***********************************************************************/ 20*4887Schin #pragma prototyped 21*4887Schin #ifndef _ULIMIT_H 22*4887Schin #define _ULIMIT_H 1 23*4887Schin /* 24*4887Schin * This is for the ulimit built-in command 25*4887Schin */ 26*4887Schin 27*4887Schin #include "FEATURE/time" 28*4887Schin #include "FEATURE/rlimits" 29*4887Schin #if defined(_sys_resource) && defined(_lib_getrlimit) 30*4887Schin # include <sys/resource.h> 31*4887Schin # if !defined(RLIMIT_FSIZE) && defined(_sys_vlimit) 32*4887Schin /* This handles hp/ux problem */ 33*4887Schin # include <sys/vlimit.h> 34*4887Schin # define RLIMIT_FSIZE (LIM_FSIZE-1) 35*4887Schin # define RLIMIT_DATA (LIM_DATA-1) 36*4887Schin # define RLIMIT_STACK (LIM_STACK-1) 37*4887Schin # define RLIMIT_CORE (LIM_CORE-1) 38*4887Schin # define RLIMIT_CPU (LIM_CPU-1) 39*4887Schin # ifdef LIM_MAXRSS 40*4887Schin # define RLIMIT_RSS (LIM_MAXRSS-1) 41*4887Schin # endif /* LIM_MAXRSS */ 42*4887Schin # endif 43*4887Schin # undef _lib_ulimit 44*4887Schin #else 45*4887Schin # ifdef _sys_vlimit 46*4887Schin # include <sys/vlimit.h> 47*4887Schin # undef _lib_ulimit 48*4887Schin # define RLIMIT_FSIZE LIM_FSIZE 49*4887Schin # define RLIMIT_DATA LIM_DATA 50*4887Schin # define RLIMIT_STACK LIM_STACK 51*4887Schin # define RLIMIT_CORE LIM_CORE 52*4887Schin # define RLIMIT_CPU LIM_CPU 53*4887Schin # ifdef LIM_MAXRSS 54*4887Schin # define RLIMIT_RSS LIM_MAXRSS 55*4887Schin # endif /* LIM_MAXRSS */ 56*4887Schin # else 57*4887Schin # ifdef _lib_ulimit 58*4887Schin # define vlimit ulimit 59*4887Schin # endif /* _lib_ulimit */ 60*4887Schin # endif /* _lib_vlimit */ 61*4887Schin #endif 62*4887Schin 63*4887Schin #ifdef RLIM_INFINITY 64*4887Schin # define INFINITY RLIM_INFINITY 65*4887Schin #else 66*4887Schin # ifndef INFINITY 67*4887Schin # define INFINITY ((rlim_t)-1L) 68*4887Schin # endif /* INFINITY */ 69*4887Schin #endif /* RLIM_INFINITY */ 70*4887Schin 71*4887Schin #if defined(_lib_getrlimit) || defined(_lib_vlimit) || defined(_lib_ulimit) 72*4887Schin # ifndef RLIMIT_CPU 73*4887Schin # define RLIMIT_CPU 0 74*4887Schin # endif /* !RLIMIT_CPU */ 75*4887Schin # ifndef RLIMIT_DATA 76*4887Schin # define RLIMIT_DATA 0 77*4887Schin # endif /* !RLIMIT_DATA */ 78*4887Schin # ifndef RLIMIT_RSS 79*4887Schin # define RLIMIT_RSS 0 80*4887Schin # endif /* !RLIMIT_RSS */ 81*4887Schin # ifndef RLIMIT_STACK 82*4887Schin # define RLIMIT_STACK 0 83*4887Schin # endif /* !RLIMIT_STACK */ 84*4887Schin # ifndef RLIMIT_CORE 85*4887Schin # define RLIMIT_CORE 0 86*4887Schin # endif /* !RLIMIT_CORE */ 87*4887Schin # ifndef RLIMIT_VMEM 88*4887Schin # define RLIMIT_VMEM 0 89*4887Schin # endif /* !RLIMIT_VMEM */ 90*4887Schin # ifndef RLIMIT_NOFILE 91*4887Schin # define RLIMIT_NOFILE 0 92*4887Schin # endif /* !RLIMIT_NOFILE */ 93*4887Schin #else 94*4887Schin # define _no_ulimit 95*4887Schin #endif 96*4887Schin #ifndef _typ_rlim_t 97*4887Schin typedef long rlim_t; 98*4887Schin #endif 99*4887Schin 100*4887Schin #if !defined(RLIMIT_NOFILE) && defined(RLIMIT_OFILE) 101*4887Schin #define RLIMIT_NOFILE RLIMIT_OFILE 102*4887Schin #endif 103*4887Schin 104*4887Schin #ifndef RLIMIT_UNKNOWN 105*4887Schin #define RLIMIT_UNKNOWN (-9999) 106*4887Schin #endif 107*4887Schin #ifndef RLIMIT_AS 108*4887Schin #define RLIMIT_AS RLIMIT_UNKNOWN 109*4887Schin #endif 110*4887Schin #ifndef RLIMIT_CORE 111*4887Schin #define RLIMIT_CORE RLIMIT_UNKNOWN 112*4887Schin #endif 113*4887Schin #ifndef RLIMIT_CPU 114*4887Schin #define RLIMIT_CPU RLIMIT_UNKNOWN 115*4887Schin #endif 116*4887Schin #ifndef RLIMIT_DATA 117*4887Schin #define RLIMIT_DATA RLIMIT_UNKNOWN 118*4887Schin #endif 119*4887Schin #ifndef RLIMIT_FSIZE 120*4887Schin #define RLIMIT_FSIZE RLIMIT_UNKNOWN 121*4887Schin #endif 122*4887Schin #ifndef RLIMIT_LOCKS 123*4887Schin #define RLIMIT_LOCKS RLIMIT_UNKNOWN 124*4887Schin #endif 125*4887Schin #ifndef RLIMIT_MEMLOCK 126*4887Schin #define RLIMIT_MEMLOCK RLIMIT_UNKNOWN 127*4887Schin #endif 128*4887Schin #ifndef RLIMIT_NOFILE 129*4887Schin #define RLIMIT_NOFILE RLIMIT_UNKNOWN 130*4887Schin #endif 131*4887Schin #ifndef RLIMIT_NPROC 132*4887Schin #define RLIMIT_NPROC RLIMIT_UNKNOWN 133*4887Schin #endif 134*4887Schin #ifndef RLIMIT_PIPE 135*4887Schin #define RLIMIT_PIPE RLIMIT_UNKNOWN 136*4887Schin #endif 137*4887Schin #ifndef RLIMIT_RSS 138*4887Schin #define RLIMIT_RSS RLIMIT_UNKNOWN 139*4887Schin #endif 140*4887Schin #ifndef RLIMIT_SBSIZE 141*4887Schin #define RLIMIT_SBSIZE RLIMIT_UNKNOWN 142*4887Schin #endif 143*4887Schin #ifndef RLIMIT_STACK 144*4887Schin #define RLIMIT_STACK RLIMIT_UNKNOWN 145*4887Schin #endif 146*4887Schin #ifndef RLIMIT_PTHREAD 147*4887Schin #define RLIMIT_PTHREAD RLIMIT_UNKNOWN 148*4887Schin #endif 149*4887Schin #ifndef RLIMIT_VMEM 150*4887Schin #define RLIMIT_VMEM RLIMIT_UNKNOWN 151*4887Schin #endif 152*4887Schin 153*4887Schin #define LIM_COUNT 0 154*4887Schin #define LIM_BLOCK 1 155*4887Schin #define LIM_BYTE 2 156*4887Schin #define LIM_KBYTE 3 157*4887Schin #define LIM_SECOND 4 158*4887Schin 159*4887Schin typedef struct Limit_s 160*4887Schin { 161*4887Schin const char name[8]; 162*4887Schin const char* description; 163*4887Schin int index; 164*4887Schin const char* conf; 165*4887Schin unsigned char option; 166*4887Schin unsigned char type; 167*4887Schin } Limit_t; 168*4887Schin 169*4887Schin extern const Limit_t shtab_limits[]; 170*4887Schin extern const int shtab_units[]; 171*4887Schin 172*4887Schin extern const char e_unlimited[]; 173*4887Schin extern const char* e_units[]; 174*4887Schin 175*4887Schin #endif /* _ULIMIT_H */ 176