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