00001 /* The <limits.h> header defines some basic sizes, both of the language types 00002 * (e.g., the number of bits in an integer), and of the operating system (e.g. 00003 * the number of characters in a file name. 00004 */ 00005 00006 #ifndef _LIMITS_H 00007 #define _LIMITS_H 00008 00009 /* Definitions about chars (8 bits in MINIX, and signed). */ 00010 #define CHAR_BIT 8 /* # bits in a char */ 00011 #define CHAR_MIN -128 /* minimum value of a char */ 00012 #define CHAR_MAX 127 /* maximum value of a char */ 00013 #define SCHAR_MIN -128 /* minimum value of a signed char */ 00014 #define SCHAR_MAX 127 /* maximum value of a signed char */ 00015 #define UCHAR_MAX 255 /* maximum value of an unsigned char */ 00016 #define MB_LEN_MAX 1 /* maximum length of a multibyte char */ 00017 00018 /* Definitions about shorts (16 bits in MINIX). */ 00019 #define SHRT_MIN (-32767-1) /* minimum value of a short */ 00020 #define SHRT_MAX 32767 /* maximum value of a short */ 00021 #define USHRT_MAX 0xFFFF /* maximum value of unsigned short */ 00022 00023 /* _EM_WSIZE is a compiler-generated symbol giving the word size in bytes. */ 00024 #if _EM_WSIZE == 2 00025 #define INT_MIN (-32767-1) /* minimum value of a 16-bit int */ 00026 #define INT_MAX 32767 /* maximum value of a 16-bit int */ 00027 #define UINT_MAX 0xFFFF /* maximum value of an unsigned 16-bit int */ 00028 #endif 00029 00030 #if _EM_WSIZE == 4 00031 #define INT_MIN (-2147483647-1) /* minimum value of a 32-bit int */ 00032 #define INT_MAX 2147483647 /* maximum value of a 32-bit int */ 00033 #define UINT_MAX 0xFFFFFFFF /* maximum value of an unsigned 32-bit int */ 00034 #endif 00035 00036 /*Definitions about longs (32 bits in MINIX). */ 00037 #define LONG_MIN (-2147483647L-1)/* minimum value of a long */ 00038 #define LONG_MAX 2147483647L /* maximum value of a long */ 00039 #define ULONG_MAX 0xFFFFFFFFL /* maximum value of an unsigned long */ 00040 00041 /*Definitions about long longs (64 bits, may not be supported). */ 00042 #ifdef __LONG_LONG_SUPPORTED 00043 #define LLONG_MIN (-0x7FFFFFFFFFFFFFFFLL-1) /* minimum value of a 00044 * long long 00045 */ 00046 #define LLONG_MAX 0x7FFFFFFFFFFFFFFFLL /* maximum value of a 00047 * long long 00048 */ 00049 #define ULLONG_MAX 0xFFFFFFFFFFFFFFFFULL /* maximum value of an 00050 * unsigned long long 00051 */ 00052 #endif 00053 00054 #include <minix/dir.h> 00055 00056 /* Minimum sizes required by the POSIX P1003.1 standard (Table 2-3). */ 00057 #ifdef _POSIX_SOURCE /* these are only visible for POSIX */ 00058 #define _POSIX_ARG_MAX 4096 /* exec() may have 4K worth of args */ 00059 #define _POSIX_CHILD_MAX 6 /* a process may have 6 children */ 00060 #define _POSIX_LINK_MAX 8 /* a file may have 8 links */ 00061 #define _POSIX_MAX_CANON 255 /* size of the canonical input queue */ 00062 #define _POSIX_MAX_INPUT 255 /* you can type 255 chars ahead */ 00063 #define _POSIX_NAME_MAX DIRSIZ /* max. file name length */ 00064 #define _POSIX_NGROUPS_MAX 8 /* max. number of supplemental groups */ 00065 #define _POSIX_OPEN_MAX 16 /* a process may have 16 files open */ 00066 #define _POSIX_PATH_MAX 255 /* a pathname may contain 255 chars */ 00067 #define _POSIX_PIPE_BUF 512 /* pipes writes of 512 bytes must be atomic */ 00068 #define _POSIX_STREAM_MAX 8 /* at least 8 FILEs can be open at once */ 00069 #define _POSIX_TZNAME_MAX 3 /* time zone names can be at least 3 chars */ 00070 #define _POSIX_SSIZE_MAX 32767 /* read() must support 32767 byte reads */ 00071 #define _POSIX_SYMLOOP_MAX 8 /* The number of symbolic links that can be 00072 * traversed in the resolution of a pathname 00073 * in the absence of a loop. 00074 */ 00075 #define _POSIX_SYMLINK_MAX 255 /* The number of bytes in a symbolic link */ 00076 00077 /* Values actually implemented by MINIX (Tables 2-4, 2-5, 2-6, and 2-7). */ 00078 /* Some of these old names had better be defined when not POSIX. */ 00079 #define _NO_LIMIT 100 /* arbitrary number; limit not enforced */ 00080 00081 #define NGROUPS_MAX 8 /* max. number of supplemental groups */ 00082 #if _EM_WSIZE > 2 00083 #define ARG_MAX 262144 /* # bytes of args + environ for exec() */ 00084 #else 00085 #define ARG_MAX 4096 /* args + environ on small machines */ 00086 #endif 00087 #define CHILD_MAX _NO_LIMIT /* MINIX does not limit children */ 00088 #define OPEN_MAX 30 /* # open files a process may have */ 00089 #if 0 /* V1 file system */ 00090 #define LINK_MAX CHAR_MAX /* # links a file may have */ 00091 #else /* V2 or better file system */ 00092 #define LINK_MAX SHRT_MAX /* # links a file may have */ 00093 #endif 00094 #define MAX_CANON 255 /* size of the canonical input queue */ 00095 #define MAX_INPUT 255 /* size of the type-ahead buffer */ 00096 #define NAME_MAX DIRSIZ /* # chars in a file name */ 00097 #define PATH_MAX 255 /* # chars in a path name */ 00098 #define PIPE_BUF 7168 /* # bytes in atomic write to a pipe */ 00099 #define STREAM_MAX 20 /* must be the same as FOPEN_MAX in stdio.h */ 00100 #define TZNAME_MAX 3 /* maximum bytes in a time zone name is 3 */ 00101 #define SSIZE_MAX 32767 /* max defined byte count for read() */ 00102 #define SYMLINK_MAX 1024 /* # bytes in a symbolic link */ 00103 #define SYMLOOP_MAX 16 /* maximum number of symbolic links that can 00104 * be reliably traversed in the resolution of 00105 * a pathname in the absence of a loop. 00106 */ 00107 #define IOV_MAX INT_MAX /* maximum number of buffers for readv/writev */ 00108 #endif /* _POSIX_SOURCE */ 00109 00110 #endif /* _LIMITS_H */
1.5.8