14887Schin /*********************************************************************** 24887Schin * * 34887Schin * This software is part of the ast package * 4*12068SRoger.Faulkner@Oracle.COM * Copyright (c) 1982-2010 AT&T Intellectual Property * 54887Schin * and is licensed under the * 64887Schin * Common Public License, Version 1.0 * 78462SApril.Chin@Sun.COM * by AT&T Intellectual Property * 84887Schin * * 94887Schin * A copy of the License is available at * 104887Schin * http://www.opensource.org/licenses/cpl1.0.txt * 114887Schin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 124887Schin * * 134887Schin * Information and Software Systems Research * 144887Schin * AT&T Research * 154887Schin * Florham Park NJ * 164887Schin * * 174887Schin * David Korn <dgk@research.att.com> * 184887Schin * * 194887Schin ***********************************************************************/ 204887Schin #pragma prototyped 214887Schin #ifndef _ULIMIT_H 224887Schin #define _ULIMIT_H 1 234887Schin /* 244887Schin * This is for the ulimit built-in command 254887Schin */ 264887Schin 274887Schin #include "FEATURE/time" 284887Schin #include "FEATURE/rlimits" 294887Schin #if defined(_sys_resource) && defined(_lib_getrlimit) 304887Schin # include <sys/resource.h> 314887Schin # if !defined(RLIMIT_FSIZE) && defined(_sys_vlimit) 324887Schin /* This handles hp/ux problem */ 334887Schin # include <sys/vlimit.h> 344887Schin # define RLIMIT_FSIZE (LIM_FSIZE-1) 354887Schin # define RLIMIT_DATA (LIM_DATA-1) 364887Schin # define RLIMIT_STACK (LIM_STACK-1) 374887Schin # define RLIMIT_CORE (LIM_CORE-1) 384887Schin # define RLIMIT_CPU (LIM_CPU-1) 394887Schin # ifdef LIM_MAXRSS 404887Schin # define RLIMIT_RSS (LIM_MAXRSS-1) 414887Schin # endif /* LIM_MAXRSS */ 424887Schin # endif 434887Schin # undef _lib_ulimit 444887Schin #else 454887Schin # ifdef _sys_vlimit 464887Schin # include <sys/vlimit.h> 474887Schin # undef _lib_ulimit 484887Schin # define RLIMIT_FSIZE LIM_FSIZE 494887Schin # define RLIMIT_DATA LIM_DATA 504887Schin # define RLIMIT_STACK LIM_STACK 514887Schin # define RLIMIT_CORE LIM_CORE 524887Schin # define RLIMIT_CPU LIM_CPU 534887Schin # ifdef LIM_MAXRSS 544887Schin # define RLIMIT_RSS LIM_MAXRSS 554887Schin # endif /* LIM_MAXRSS */ 564887Schin # else 574887Schin # ifdef _lib_ulimit 584887Schin # define vlimit ulimit 594887Schin # endif /* _lib_ulimit */ 604887Schin # endif /* _lib_vlimit */ 614887Schin #endif 624887Schin 634887Schin #ifdef RLIM_INFINITY 644887Schin # define INFINITY RLIM_INFINITY 654887Schin #else 664887Schin # ifndef INFINITY 674887Schin # define INFINITY ((rlim_t)-1L) 684887Schin # endif /* INFINITY */ 694887Schin #endif /* RLIM_INFINITY */ 704887Schin 714887Schin #if defined(_lib_getrlimit) || defined(_lib_vlimit) || defined(_lib_ulimit) 724887Schin # ifndef RLIMIT_CPU 734887Schin # define RLIMIT_CPU 0 744887Schin # endif /* !RLIMIT_CPU */ 754887Schin # ifndef RLIMIT_DATA 764887Schin # define RLIMIT_DATA 0 774887Schin # endif /* !RLIMIT_DATA */ 784887Schin # ifndef RLIMIT_RSS 794887Schin # define RLIMIT_RSS 0 804887Schin # endif /* !RLIMIT_RSS */ 814887Schin # ifndef RLIMIT_STACK 824887Schin # define RLIMIT_STACK 0 834887Schin # endif /* !RLIMIT_STACK */ 844887Schin # ifndef RLIMIT_CORE 854887Schin # define RLIMIT_CORE 0 864887Schin # endif /* !RLIMIT_CORE */ 874887Schin # ifndef RLIMIT_VMEM 884887Schin # define RLIMIT_VMEM 0 894887Schin # endif /* !RLIMIT_VMEM */ 904887Schin # ifndef RLIMIT_NOFILE 914887Schin # define RLIMIT_NOFILE 0 924887Schin # endif /* !RLIMIT_NOFILE */ 934887Schin #else 944887Schin # define _no_ulimit 954887Schin #endif 964887Schin #ifndef _typ_rlim_t 974887Schin typedef long rlim_t; 984887Schin #endif 994887Schin 1004887Schin #if !defined(RLIMIT_NOFILE) && defined(RLIMIT_OFILE) 1014887Schin #define RLIMIT_NOFILE RLIMIT_OFILE 1024887Schin #endif 1034887Schin 1044887Schin #ifndef RLIMIT_UNKNOWN 1054887Schin #define RLIMIT_UNKNOWN (-9999) 1064887Schin #endif 1074887Schin #ifndef RLIMIT_AS 1084887Schin #define RLIMIT_AS RLIMIT_UNKNOWN 1094887Schin #endif 1104887Schin #ifndef RLIMIT_CORE 1114887Schin #define RLIMIT_CORE RLIMIT_UNKNOWN 1124887Schin #endif 1134887Schin #ifndef RLIMIT_CPU 1144887Schin #define RLIMIT_CPU RLIMIT_UNKNOWN 1154887Schin #endif 1164887Schin #ifndef RLIMIT_DATA 1174887Schin #define RLIMIT_DATA RLIMIT_UNKNOWN 1184887Schin #endif 1194887Schin #ifndef RLIMIT_FSIZE 1204887Schin #define RLIMIT_FSIZE RLIMIT_UNKNOWN 1214887Schin #endif 1224887Schin #ifndef RLIMIT_LOCKS 1234887Schin #define RLIMIT_LOCKS RLIMIT_UNKNOWN 1244887Schin #endif 1254887Schin #ifndef RLIMIT_MEMLOCK 1264887Schin #define RLIMIT_MEMLOCK RLIMIT_UNKNOWN 1274887Schin #endif 1284887Schin #ifndef RLIMIT_NOFILE 1294887Schin #define RLIMIT_NOFILE RLIMIT_UNKNOWN 1304887Schin #endif 1314887Schin #ifndef RLIMIT_NPROC 1324887Schin #define RLIMIT_NPROC RLIMIT_UNKNOWN 1334887Schin #endif 1344887Schin #ifndef RLIMIT_PIPE 1354887Schin #define RLIMIT_PIPE RLIMIT_UNKNOWN 1364887Schin #endif 1374887Schin #ifndef RLIMIT_RSS 1384887Schin #define RLIMIT_RSS RLIMIT_UNKNOWN 1394887Schin #endif 1404887Schin #ifndef RLIMIT_SBSIZE 1414887Schin #define RLIMIT_SBSIZE RLIMIT_UNKNOWN 1424887Schin #endif 1434887Schin #ifndef RLIMIT_STACK 1444887Schin #define RLIMIT_STACK RLIMIT_UNKNOWN 1454887Schin #endif 1464887Schin #ifndef RLIMIT_PTHREAD 1474887Schin #define RLIMIT_PTHREAD RLIMIT_UNKNOWN 1484887Schin #endif 1494887Schin #ifndef RLIMIT_VMEM 1504887Schin #define RLIMIT_VMEM RLIMIT_UNKNOWN 1514887Schin #endif 1524887Schin 1534887Schin #define LIM_COUNT 0 1544887Schin #define LIM_BLOCK 1 1554887Schin #define LIM_BYTE 2 1564887Schin #define LIM_KBYTE 3 1574887Schin #define LIM_SECOND 4 1584887Schin 1594887Schin typedef struct Limit_s 1604887Schin { 1614887Schin const char name[8]; 1624887Schin const char* description; 1634887Schin int index; 1644887Schin const char* conf; 1654887Schin unsigned char option; 1664887Schin unsigned char type; 1674887Schin } Limit_t; 1684887Schin 1694887Schin extern const Limit_t shtab_limits[]; 1704887Schin extern const int shtab_units[]; 1714887Schin 1724887Schin extern const char e_unlimited[]; 1734887Schin extern const char* e_units[]; 1744887Schin 1754887Schin #endif /* _ULIMIT_H */ 176