1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*b30d1939SAndy Fiddaman * Copyright (c) 1982-2012 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6*b30d1939SAndy Fiddaman * Eclipse Public License, Version 1.0 * 77c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10*b30d1939SAndy Fiddaman * http://www.eclipse.org/org/documents/epl-v10.html * 11*b30d1939SAndy Fiddaman * (with md5 checksum b35adb5213ca9657e911e9befb180842) * 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_VMEM 73*b30d1939SAndy Fiddaman # ifdef RLIMIT_AS 74*b30d1939SAndy Fiddaman # define RLIMIT_VMEM RLIMIT_AS 75*b30d1939SAndy Fiddaman # endif 76da2e3ebdSchin # endif /* !RLIMIT_VMEM */ 77da2e3ebdSchin #else 78da2e3ebdSchin # define _no_ulimit 79da2e3ebdSchin #endif 80da2e3ebdSchin #ifndef _typ_rlim_t 81da2e3ebdSchin typedef long rlim_t; 82da2e3ebdSchin #endif 83da2e3ebdSchin 84da2e3ebdSchin #if !defined(RLIMIT_NOFILE) && defined(RLIMIT_OFILE) 85da2e3ebdSchin #define RLIMIT_NOFILE RLIMIT_OFILE 86da2e3ebdSchin #endif 87da2e3ebdSchin 88da2e3ebdSchin #ifndef RLIMIT_UNKNOWN 89da2e3ebdSchin #define RLIMIT_UNKNOWN (-9999) 90da2e3ebdSchin #endif 91da2e3ebdSchin #ifndef RLIMIT_AS 92da2e3ebdSchin #define RLIMIT_AS RLIMIT_UNKNOWN 93da2e3ebdSchin #endif 94da2e3ebdSchin #ifndef RLIMIT_CORE 95da2e3ebdSchin #define RLIMIT_CORE RLIMIT_UNKNOWN 96da2e3ebdSchin #endif 97da2e3ebdSchin #ifndef RLIMIT_CPU 98da2e3ebdSchin #define RLIMIT_CPU RLIMIT_UNKNOWN 99da2e3ebdSchin #endif 100da2e3ebdSchin #ifndef RLIMIT_DATA 101da2e3ebdSchin #define RLIMIT_DATA RLIMIT_UNKNOWN 102da2e3ebdSchin #endif 103da2e3ebdSchin #ifndef RLIMIT_FSIZE 104da2e3ebdSchin #define RLIMIT_FSIZE RLIMIT_UNKNOWN 105da2e3ebdSchin #endif 106da2e3ebdSchin #ifndef RLIMIT_LOCKS 107da2e3ebdSchin #define RLIMIT_LOCKS RLIMIT_UNKNOWN 108da2e3ebdSchin #endif 109da2e3ebdSchin #ifndef RLIMIT_MEMLOCK 110da2e3ebdSchin #define RLIMIT_MEMLOCK RLIMIT_UNKNOWN 111da2e3ebdSchin #endif 112*b30d1939SAndy Fiddaman #ifndef RLIMIT_MSGQUEUE 113*b30d1939SAndy Fiddaman #define RLIMIT_MSGQUEUE RLIMIT_UNKNOWN 114*b30d1939SAndy Fiddaman #endif 115da2e3ebdSchin #ifndef RLIMIT_NOFILE 116da2e3ebdSchin #define RLIMIT_NOFILE RLIMIT_UNKNOWN 117da2e3ebdSchin #endif 118*b30d1939SAndy Fiddaman #ifndef RLIMIT_NICE 119*b30d1939SAndy Fiddaman #define RLIMIT_NICE RLIMIT_UNKNOWN 120*b30d1939SAndy Fiddaman #endif 121da2e3ebdSchin #ifndef RLIMIT_NPROC 122da2e3ebdSchin #define RLIMIT_NPROC RLIMIT_UNKNOWN 123da2e3ebdSchin #endif 124da2e3ebdSchin #ifndef RLIMIT_PIPE 125da2e3ebdSchin #define RLIMIT_PIPE RLIMIT_UNKNOWN 126da2e3ebdSchin #endif 127*b30d1939SAndy Fiddaman #ifndef RLIMIT_PTHREAD 128*b30d1939SAndy Fiddaman #define RLIMIT_PTHREAD RLIMIT_UNKNOWN 129*b30d1939SAndy Fiddaman #endif 130da2e3ebdSchin #ifndef RLIMIT_RSS 131da2e3ebdSchin #define RLIMIT_RSS RLIMIT_UNKNOWN 132da2e3ebdSchin #endif 133*b30d1939SAndy Fiddaman #ifndef RLIMIT_RTPRIO 134*b30d1939SAndy Fiddaman #define RLIMIT_RTPRIO RLIMIT_UNKNOWN 135*b30d1939SAndy Fiddaman #endif 136da2e3ebdSchin #ifndef RLIMIT_SBSIZE 137da2e3ebdSchin #define RLIMIT_SBSIZE RLIMIT_UNKNOWN 138da2e3ebdSchin #endif 139*b30d1939SAndy Fiddaman #ifndef RLIMIT_SIGPENDING 140*b30d1939SAndy Fiddaman #define RLIMIT_SIGPENDING RLIMIT_UNKNOWN 141*b30d1939SAndy Fiddaman #endif 142da2e3ebdSchin #ifndef RLIMIT_STACK 143da2e3ebdSchin #define RLIMIT_STACK RLIMIT_UNKNOWN 144da2e3ebdSchin #endif 145*b30d1939SAndy Fiddaman #ifndef RLIMIT_SWAP 146*b30d1939SAndy Fiddaman #define RLIMIT_SWAP RLIMIT_UNKNOWN 147da2e3ebdSchin #endif 148da2e3ebdSchin #ifndef RLIMIT_VMEM 149da2e3ebdSchin #define RLIMIT_VMEM RLIMIT_UNKNOWN 150da2e3ebdSchin #endif 151da2e3ebdSchin 152da2e3ebdSchin #define LIM_COUNT 0 153da2e3ebdSchin #define LIM_BLOCK 1 154da2e3ebdSchin #define LIM_BYTE 2 155da2e3ebdSchin #define LIM_KBYTE 3 156da2e3ebdSchin #define LIM_SECOND 4 157da2e3ebdSchin 158da2e3ebdSchin typedef struct Limit_s 159da2e3ebdSchin { 160*b30d1939SAndy Fiddaman const char name[16]; 161da2e3ebdSchin const char* description; 162da2e3ebdSchin int index; 163da2e3ebdSchin const char* conf; 164da2e3ebdSchin unsigned char option; 165da2e3ebdSchin unsigned char type; 166da2e3ebdSchin } Limit_t; 167da2e3ebdSchin 168da2e3ebdSchin extern const Limit_t shtab_limits[]; 169da2e3ebdSchin extern const int shtab_units[]; 170da2e3ebdSchin 171da2e3ebdSchin extern const char e_unlimited[]; 172da2e3ebdSchin extern const char* e_units[]; 173da2e3ebdSchin 174da2e3ebdSchin #endif /* _ULIMIT_H */ 175