root/sys/limits.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /* $OpenBSD: limits.h,v 1.7 2007/05/07 15:29:44 millert Exp $ */
    2 /*
    3  * Copyright (c) 2002 Marc Espie.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS
   15  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   16  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   17  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OPENBSD
   18  * PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   19  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   20  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   25  */
   26 #ifndef _SYS_LIMITS_H_
   27 #define _SYS_LIMITS_H_
   28 
   29 #include <sys/cdefs.h>
   30 
   31 /* Common definitions for limits.h. */
   32 
   33 /*
   34  * <machine/internal_types.h> is meant to describe a specific architecture,
   35  * but to be a safe include, that doesn't ever define anything that is
   36  * user-visible (only typedefs and #define names that stays in the __xxx
   37  * namespace).
   38  *
   39  *   __machine_has_unsigned_chars       (default is signed chars)
   40  *   __FLT_xxx/__DBL_xxx                non standard values for floating
   41  *                                      points limits.
   42  */
   43 #include <machine/internal_types.h>
   44 
   45 /* Legacy */
   46 #include <machine/limits.h>
   47 
   48 #define CHAR_BIT        8               /* number of bits in a char */
   49 
   50 #define SCHAR_MAX       0x7f            /* max value for a signed char */
   51 #define SCHAR_MIN       (-0x7f-1)       /* min value for a signed char */
   52 
   53 #define UCHAR_MAX       0xff            /* max value for an unsigned char */
   54 #ifdef __machine_has_unsigned_chars
   55 # define CHAR_MIN       0               /* min value for a char */
   56 # define CHAR_MAX       0xff            /* max value for a char */
   57 #else
   58 # define CHAR_MAX       0x7f
   59 # define CHAR_MIN       (-0x7f-1)
   60 #endif
   61 
   62 #define USHRT_MAX       0xffff          /* max value for an unsigned short */
   63 #define SHRT_MAX        0x7fff          /* max value for a short */
   64 #define SHRT_MIN        (-0x7fff-1)     /* min value for a short */
   65 
   66 #define UINT_MAX        0xffffffffU     /* max value for an unsigned int */
   67 #define INT_MAX         0x7fffffff      /* max value for an int */
   68 #define INT_MIN         (-0x7fffffff-1) /* min value for an int */
   69 
   70 #ifdef __LP64__
   71 # define ULONG_MAX      0xffffffffffffffffUL
   72                                         /* max value for unsigned long */
   73 # define LONG_MAX       0x7fffffffffffffffL     
   74                                         /* max value for a signed long */
   75 # define LONG_MIN       (-0x7fffffffffffffffL-1)        
   76                                         /* min value for a signed long */
   77 #else
   78 # define ULONG_MAX      0xffffffffUL    /* max value for an unsigned long */
   79 # define LONG_MAX       0x7fffffffL     /* max value for a long */
   80 # define LONG_MIN       (-0x7fffffffL-1)/* min value for a long */
   81 #endif
   82 
   83 #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
   84 # define ULLONG_MAX     0xffffffffffffffffULL   
   85                                         /* max value for unsigned long long */
   86 # define LLONG_MAX      0x7fffffffffffffffLL    
   87                                         /* max value for a signed long long */
   88 # define LLONG_MIN      (-0x7fffffffffffffffLL-1)       
   89                                         /* min value for a signed long long */
   90 #endif
   91 
   92 #if __BSD_VISIBLE
   93 # define UID_MAX        UINT_MAX        /* max value for a uid_t */
   94 # define GID_MAX        UINT_MAX        /* max value for a gid_t */
   95 #endif
   96 
   97 
   98 #if __XPG_VISIBLE
   99 # ifdef __LP64__
  100 #  define LONG_BIT      64
  101 # else
  102 #  define LONG_BIT      32
  103 # endif
  104 # define WORD_BIT       32
  105 
  106 /* float.h defines these as well */
  107 # if !defined(DBL_DIG)
  108 #  if defined(__DBL_DIG)
  109 #   define DBL_DIG      __DBL_DIG
  110 #   define DBL_MAX      __DBL_MAX
  111 #   define DBL_MIN      __DBL_MIN
  112 
  113 #   define FLT_DIG      __FLT_DIG
  114 #   define FLT_MAX      __FLT_MAX
  115 #   define FLT_MIN      __FLT_MIN
  116 #  else
  117 #   define DBL_DIG      15
  118 #   define DBL_MAX      1.7976931348623157E+308
  119 #   define DBL_MIN      2.2250738585072014E-308
  120  
  121 #   define FLT_DIG      6
  122 #   define FLT_MAX      3.40282347E+38F
  123 #   define FLT_MIN      1.17549435E-38F
  124 #  endif
  125 # endif
  126 #endif
  127 
  128 #endif

/* [<][>][^][v][top][bottom][index][help] */