_types.h revision 102243
150476Speter/*- 232283Shelbig * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 332283Shelbig * Copyright (c) 1990, 1993 432283Shelbig * The Regents of the University of California. All rights reserved. 532283Shelbig * 632283Shelbig * Redistribution and use in source and binary forms, with or without 732283Shelbig * modification, are permitted provided that the following conditions 832283Shelbig * are met: 932283Shelbig * 1. Redistributions of source code must retain the above copyright 1032283Shelbig * notice, this list of conditions and the following disclaimer. 1132283Shelbig * 2. Redistributions in binary form must reproduce the above copyright 1232283Shelbig * notice, this list of conditions and the following disclaimer in the 1332283Shelbig * documentation and/or other materials provided with the distribution. 1432283Shelbig * 3. All advertising materials mentioning features or use of this software 1532283Shelbig * must display the following acknowledgement: 1632283Shelbig * This product includes software developed by the University of 1732283Shelbig * California, Berkeley and its contributors. 1832283Shelbig * 4. Neither the name of the University nor the names of its contributors 1932283Shelbig * may be used to endorse or promote products derived from this software 2032283Shelbig * without specific prior written permission. 2132283Shelbig * 2232283Shelbig * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2332283Shelbig * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2432283Shelbig * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2532283Shelbig * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2632283Shelbig * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2732283Shelbig * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2832283Shelbig * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2932283Shelbig * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3032283Shelbig * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3132283Shelbig * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3232283Shelbig * SUCH DAMAGE. 3332283Shelbig * 3432283Shelbig * From: @(#)ansi.h 8.2 (Berkeley) 1/4/94 3532283Shelbig * From: @(#)types.h 8.3 (Berkeley) 1/5/94 3632283Shelbig * $FreeBSD: head/sys/i386/include/_types.h 102243 2002-08-22 00:28:24Z mike $ 3732283Shelbig */ 3832283Shelbig 3932283Shelbig#ifndef _MACHINE__TYPES_H_ 4032283Shelbig#define _MACHINE__TYPES_H_ 4132283Shelbig 4232283Shelbig/* 4332283Shelbig * Basic types upon which most other types are built. 4432283Shelbig */ 4532283Shelbigtypedef __signed char __int8_t; 4632283Shelbigtypedef unsigned char __uint8_t; 4732283Shelbigtypedef short __int16_t; 4832283Shelbigtypedef unsigned short __uint16_t; 4932283Shelbigtypedef int __int32_t; 5032283Shelbigtypedef unsigned int __uint32_t; 5132283Shelbig 5232283Shelbig#if defined(__GNUC__) 5332283Shelbigtypedef int __attribute__((__mode__(__DI__))) __int64_t; 5432283Shelbigtypedef unsigned int __attribute__((__mode__(__DI__))) __uint64_t; 5532283Shelbig#else 5632283Shelbig/* LONGLONG */ 5732283Shelbigtypedef long long __int64_t; 5832283Shelbig/* LONGLONG */ 5932283Shelbigtypedef unsigned long long __uint64_t; 6032283Shelbig#endif 6132283Shelbig 6232283Shelbig/* 6332283Shelbig * Standard type definitions. 6432283Shelbig */ 6532283Shelbigtypedef unsigned long __clock_t; /* clock()... */ 6632283Shelbigtypedef __int32_t __clockid_t; /* clock_gettime()... */ 6732283Shelbigtypedef __int32_t __critical_t; 6854090Sachetypedef __uint32_t __fflags_t; /* file flags */ 6932283Shelbigtypedef __int32_t __intfptr_t; 7032283Shelbigtypedef __int64_t __intmax_t; 7132283Shelbigtypedef __int32_t __intptr_t; 7232283Shelbigtypedef __uint32_t __intrmask_t; 7332283Shelbigtypedef __int32_t __int_fast8_t; 7432283Shelbigtypedef __int32_t __int_fast16_t; 7532283Shelbigtypedef __int32_t __int_fast32_t; 7632283Shelbigtypedef __int64_t __int_fast64_t; 7732283Shelbigtypedef __int8_t __int_least8_t; 7832283Shelbigtypedef __int16_t __int_least16_t; 7932283Shelbigtypedef __int32_t __int_least32_t; 8054090Sachetypedef __int64_t __int_least64_t; 8153943Sachetypedef __int64_t __off_t; /* file offset */ 8253943Sachetypedef __int32_t __pid_t; /* process [group] */ 8353943Sachetypedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ 8453943Sachetypedef __int32_t __register_t; 8553943Sachetypedef __int32_t __segsz_t; /* segment size (in pages) */ 8653943Sachetypedef __uint32_t __size_t; /* sizeof() */ 8753943Sachetypedef __uint32_t __socklen_t; 8853943Sachetypedef __int32_t __ssize_t; /* byte count or error */ 8953943Sachetypedef __int32_t __time_t; /* time()... */ 9053943Sachetypedef __int32_t __timer_t; /* timer_gettime()... */ 9153943Sachetypedef __uint32_t __uintfptr_t; 9253943Sachetypedef __uint64_t __uintmax_t; 9353943Sachetypedef __uint32_t __uintptr_t; 9453943Sachetypedef __uint32_t __uint_fast8_t; 9553943Sachetypedef __uint32_t __uint_fast16_t; 9653943Sachetypedef __uint32_t __uint_fast32_t; 9774413Sachetypedef __uint64_t __uint_fast64_t; 9853943Sachetypedef __uint8_t __uint_least8_t; 9974413Sachetypedef __uint16_t __uint_least16_t; 10053961Sachetypedef __uint32_t __uint_least32_t; 10174413Sachetypedef __uint64_t __uint_least64_t; 10253961Sachetypedef __uint32_t __u_register_t; 10374413Sachetypedef __uint32_t __vm_offset_t; 10474413Sachetypedef __int64_t __vm_ooffset_t; 105typedef __uint64_t __vm_pindex_t; 106typedef __uint32_t __vm_size_t; 107 108/* 109 * Unusual type definitions. 110 */ 111/* 112 * The rune type above is declared to be an ``int'' instead of the more natural 113 * ``unsigned long'' or ``long''. Two things are happening here. It is not 114 * unsigned so that EOF (-1) can be naturally assigned to it and used. Also, 115 * it looks like 10646 will be a 31 bit standard. This means that if your 116 * ints cannot hold 32 bits, you will be in trouble. The reason an int was 117 * chosen over a long is that the is*() and to*() routines take ints (says 118 * ANSI C), but they use __ct_rune_t instead of int. By changing it here, you 119 * lose a bit of ANSI conformance, but your programs will still work. 120 * 121 * NOTE: rune_t is not covered by ANSI nor other standards, and should not 122 * be instantiated outside of lib/libc/locale. Use wchar_t. wchar_t and 123 * rune_t must be the same type. Also wint_t must be no narrower than 124 * wchar_t, and should also be able to hold all members of the largest 125 * character set plus one extra value (WEOF). wint_t must be at least 16 bits. 126 */ 127typedef __int32_t __ct_rune_t; 128typedef __int32_t __rune_t; 129typedef __int32_t __wchar_t; 130typedef __int32_t __wint_t; 131 132/* 133 * mbstate_t is an opaque object to keep conversion state, during multibyte 134 * stream conversions. The content must not be referenced by user programs. 135 */ 136typedef union { 137 char __mbstate8[128]; 138 __int64_t _mbstateL; /* for alignment */ 139} __mbstate_t; 140 141#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) 142typedef __builtin_va_list __va_list; /* internally known to gcc */ 143#else 144typedef char * __va_list; 145#endif /* post GCC 2.95 */ 146#if defined __GNUC__ && !defined(__GNUC_VA_LIST) && !defined(__NO_GNUC_VA_LIST) 147#define __GNUC_VA_LIST 148typedef __va_list __gnuc_va_list; /* compatibility w/GNU headers*/ 149#endif 150 151#endif /* !_MACHINE__TYPES_H_ */ 152