types.h revision 150559
11541Srgrimes/*- 214500Shsu * Copyright (c) 1982, 1986, 1991, 1993, 1994 31541Srgrimes * The Regents of the University of California. All rights reserved. 41541Srgrimes * (c) UNIX System Laboratories, Inc. 51541Srgrimes * All or some portions of this file are derived from material licensed 61541Srgrimes * to the University of California by American Telephone and Telegraph 71541Srgrimes * Co. or Unix System Laboratories, Inc. and are reproduced herein with 81541Srgrimes * the permission of UNIX System Laboratories, Inc. 91541Srgrimes * 101541Srgrimes * Redistribution and use in source and binary forms, with or without 111541Srgrimes * modification, are permitted provided that the following conditions 121541Srgrimes * are met: 131541Srgrimes * 1. Redistributions of source code must retain the above copyright 141541Srgrimes * notice, this list of conditions and the following disclaimer. 151541Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 161541Srgrimes * notice, this list of conditions and the following disclaimer in the 171541Srgrimes * documentation and/or other materials provided with the distribution. 181541Srgrimes * 4. Neither the name of the University nor the names of its contributors 191541Srgrimes * may be used to endorse or promote products derived from this software 201541Srgrimes * without specific prior written permission. 211541Srgrimes * 221541Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 231541Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 241541Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 251541Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 261541Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 271541Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 281541Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 291541Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 301541Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 311541Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 321541Srgrimes * SUCH DAMAGE. 331541Srgrimes * 3414500Shsu * @(#)types.h 8.6 (Berkeley) 2/19/95 3550477Speter * $FreeBSD: head/sys/sys/types.h 150559 2005-09-26 07:45:35Z njl $ 361541Srgrimes */ 371541Srgrimes 381541Srgrimes#ifndef _SYS_TYPES_H_ 391541Srgrimes#define _SYS_TYPES_H_ 401541Srgrimes 4133778Sbde#include <sys/cdefs.h> 4233778Sbde 431541Srgrimes/* Machine type dependent parameters. */ 4490868Smike#include <machine/endian.h> 4593514Smike#include <sys/_types.h> 461541Srgrimes 47146824Srodrigc#include <sys/_pthreadtypes.h> 48146824Srodrigc 49104341Smike#if __BSD_VISIBLE 501541Srgrimestypedef unsigned char u_char; 511541Srgrimestypedef unsigned short u_short; 521541Srgrimestypedef unsigned int u_int; 531541Srgrimestypedef unsigned long u_long; 54128448Sobrien#ifndef _KERNEL 551541Srgrimestypedef unsigned short ushort; /* Sys V compatibility */ 561541Srgrimestypedef unsigned int uint; /* Sys V compatibility */ 571541Srgrimes#endif 58128448Sobrien#endif 591541Srgrimes 6093514Smike/* 6193514Smike * XXX POSIX sized integrals that should appear only in <sys/stdint.h>. 6293514Smike */ 6393514Smike#ifndef _INT8_T_DECLARED 6493514Smiketypedef __int8_t int8_t; 6593514Smike#define _INT8_T_DECLARED 6693514Smike#endif 6793514Smike 6893514Smike#ifndef _INT16_T_DECLARED 6993514Smiketypedef __int16_t int16_t; 7093514Smike#define _INT16_T_DECLARED 7193514Smike#endif 7293514Smike 7393514Smike#ifndef _INT32_T_DECLARED 7493514Smiketypedef __int32_t int32_t; 7593514Smike#define _INT32_T_DECLARED 7693514Smike#endif 7793514Smike 7893514Smike#ifndef _INT64_T_DECLARED 7993514Smiketypedef __int64_t int64_t; 8093514Smike#define _INT64_T_DECLARED 8193514Smike#endif 8293514Smike 8393514Smike#ifndef _UINT8_T_DECLARED 8493514Smiketypedef __uint8_t uint8_t; 8593514Smike#define _UINT8_T_DECLARED 8693514Smike#endif 8793514Smike 8893514Smike#ifndef _UINT16_T_DECLARED 8993514Smiketypedef __uint16_t uint16_t; 9093514Smike#define _UINT16_T_DECLARED 9193514Smike#endif 9293514Smike 9393514Smike#ifndef _UINT32_T_DECLARED 9493514Smiketypedef __uint32_t uint32_t; 9593514Smike#define _UINT32_T_DECLARED 9693514Smike#endif 9793514Smike 9893514Smike#ifndef _UINT64_T_DECLARED 9993514Smiketypedef __uint64_t uint64_t; 10093514Smike#define _UINT64_T_DECLARED 10193514Smike#endif 10293514Smike 10393514Smike#ifndef _INTPTR_T_DECLARED 10493514Smiketypedef __intptr_t intptr_t; 10593514Smiketypedef __uintptr_t uintptr_t; 10693514Smike#define _INTPTR_T_DECLARED 10793514Smike#endif 10893514Smike 109104341Smiketypedef __uint8_t u_int8_t; /* unsigned integrals (deprecated) */ 11041927Sdttypedef __uint16_t u_int16_t; 11141927Sdttypedef __uint32_t u_int32_t; 11241927Sdttypedef __uint64_t u_int64_t; 11341927Sdt 114104341Smiketypedef __uint64_t u_quad_t; /* quads (deprecated) */ 115104341Smiketypedef __int64_t quad_t; 1161541Srgrimestypedef quad_t * qaddr_t; 1171541Srgrimes 1181541Srgrimestypedef char * caddr_t; /* core address */ 11951901Smarceltypedef __const char * c_caddr_t; /* core address, pointer to const */ 12051901Smarceltypedef __volatile char *v_caddr_t; /* core address, pointer to volatile */ 121110051Smike 122143952Sdas#ifndef _BLKSIZE_T_DECLARED 123143952Sdastypedef __blksize_t blksize_t; 124143952Sdas#define _BLKSIZE_T_DECLARED 125143952Sdas#endif 126143952Sdas 127143952Sdas#ifndef _BLKCNT_T_DECLARED 128143952Sdastypedef __blkcnt_t blkcnt_t; 129143952Sdas#define _BLKCNT_T_DECLARED 130143952Sdas#endif 131143952Sdas 132110051Smike#ifndef _CLOCK_T_DECLARED 133110051Smiketypedef __clock_t clock_t; 134110051Smike#define _CLOCK_T_DECLARED 135110051Smike#endif 136110051Smike 137110051Smike#ifndef _CLOCKID_T_DECLARED 138110051Smiketypedef __clockid_t clockid_t; 139110051Smike#define _CLOCKID_T_DECLARED 140110051Smike#endif 141110051Smike 142102227Smiketypedef __critical_t critical_t; /* Critical section value */ 143104341Smiketypedef __int64_t daddr_t; /* disk address */ 144110051Smike 145112745Smike#ifndef _DEV_T_DECLARED 146112745Smiketypedef __dev_t dev_t; /* device number or struct cdev */ 147112745Smike#define _DEV_T_DECLARED 148112745Smike#endif 149112745Smike 150110051Smike#ifndef _FFLAGS_T_DECLARED 151110051Smiketypedef __fflags_t fflags_t; /* file flags */ 152110051Smike#define _FFLAGS_T_DECLARED 153110051Smike#endif 154110051Smike 155130434Sdastypedef __fixpt_t fixpt_t; /* fixed point number */ 15691325Smike 157110051Smike#ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */ 158110051Smiketypedef __fsblkcnt_t fsblkcnt_t; 159110051Smiketypedef __fsfilcnt_t fsfilcnt_t; 160110051Smike#define _FSBLKCNT_T_DECLARED 161110051Smike#endif 162110051Smike 163102227Smike#ifndef _GID_T_DECLARED 164102227Smiketypedef __gid_t gid_t; /* group id */ 165102227Smike#define _GID_T_DECLARED 16691325Smike#endif 16791325Smike 168105683Stjr#ifndef _IN_ADDR_T_DECLARED 169105683Stjrtypedef __uint32_t in_addr_t; /* base type for internet address */ 170105683Stjr#define _IN_ADDR_T_DECLARED 171105683Stjr#endif 172105683Stjr 173105683Stjr#ifndef _IN_PORT_T_DECLARED 174105683Stjrtypedef __uint16_t in_port_t; 175105683Stjr#define _IN_PORT_T_DECLARED 176105683Stjr#endif 177105683Stjr 178105650Smike#ifndef _ID_T_DECLARED 179105650Smiketypedef __id_t id_t; /* can hold a uid_t or pid_t */ 180105650Smike#define _ID_T_DECLARED 181105650Smike#endif 182105650Smike 183111705Smike#ifndef _INO_T_DECLARED 184111705Smiketypedef __ino_t ino_t; /* inode number */ 185111705Smike#define _INO_T_DECLARED 186111705Smike#endif 187102325Smike 188105142Smike#ifndef _KEY_T_DECLARED 189105142Smiketypedef __key_t key_t; /* IPC key (for Sys V IPC) */ 190105142Smike#define _KEY_T_DECLARED 191105142Smike#endif 192105142Smike 193130735Smarcel#ifndef _LWPID_T_DECLARED 194130735Smarceltypedef __lwpid_t lwpid_t; /* Thread ID (a.k.a. LWP) */ 195130735Smarcel#define _LWPID_T_DECLARED 196130735Smarcel#endif 197130735Smarcel 198102325Smike#ifndef _MODE_T_DECLARED 199102325Smiketypedef __mode_t mode_t; /* permissions */ 200102325Smike#define _MODE_T_DECLARED 201102325Smike#endif 202102325Smike 203111705Smike#ifndef _NLINK_T_DECLARED 204111705Smiketypedef __nlink_t nlink_t; /* link count */ 205111705Smike#define _NLINK_T_DECLARED 206111705Smike#endif 207102325Smike 208102325Smike#ifndef _OFF_T_DECLARED 209102227Smiketypedef __off_t off_t; /* file offset */ 210102325Smike#define _OFF_T_DECLARED 211102325Smike#endif 212102325Smike 213103457Smike#ifndef _PID_T_DECLARED 214102227Smiketypedef __pid_t pid_t; /* process id */ 215103457Smike#define _PID_T_DECLARED 216103457Smike#endif 217103457Smike 218102227Smiketypedef __register_t register_t; 219105650Smike 220105650Smike#ifndef _RLIM_T_DECLARED 221105650Smiketypedef __rlim_t rlim_t; /* resource limit */ 222105650Smike#define _RLIM_T_DECLARED 223105650Smike#endif 224105650Smike 225102227Smiketypedef __segsz_t segsz_t; /* segment size (in pages) */ 226108190Smike 227110051Smike#ifndef _SIZE_T_DECLARED 228110051Smiketypedef __size_t size_t; 229110051Smike#define _SIZE_T_DECLARED 230110051Smike#endif 231110051Smike 232110051Smike#ifndef _SSIZE_T_DECLARED 233110051Smiketypedef __ssize_t ssize_t; 234110051Smike#define _SSIZE_T_DECLARED 235110051Smike#endif 236110051Smike 237108190Smike#ifndef _SUSECONDS_T_DECLARED 238108190Smiketypedef __suseconds_t suseconds_t; /* microseconds (signed) */ 239108190Smike#define _SUSECONDS_T_DECLARED 240108190Smike#endif 241108190Smike 242110051Smike#ifndef _TIME_T_DECLARED 243110051Smiketypedef __time_t time_t; 244110051Smike#define _TIME_T_DECLARED 245110051Smike#endif 246110051Smike 247110051Smike#ifndef _TIMER_T_DECLARED 248110051Smiketypedef __timer_t timer_t; 249110051Smike#define _TIMER_T_DECLARED 250110051Smike#endif 251110051Smike 252102227Smiketypedef __u_register_t u_register_t; 25394363Smike 254102227Smike#ifndef _UID_T_DECLARED 255102227Smiketypedef __uid_t uid_t; /* user id */ 256102227Smike#define _UID_T_DECLARED 25736735Sdfr#endif 25894363Smike 259108190Smike#ifndef _USECONDS_T_DECLARED 260108190Smiketypedef __useconds_t useconds_t; /* microseconds (unsigned) */ 261108190Smike#define _USECONDS_T_DECLARED 262108190Smike#endif 263108190Smike 264102227Smiketypedef __vm_offset_t vm_offset_t; 265102227Smiketypedef __vm_ooffset_t vm_ooffset_t; 266112569Sjaketypedef __vm_paddr_t vm_paddr_t; 267102227Smiketypedef __vm_pindex_t vm_pindex_t; 268102227Smiketypedef __vm_size_t vm_size_t; 2691541Srgrimes 27055205Speter#ifdef _KERNEL 27115481Sbdetypedef int boolean_t; 272127239Smarceltypedef __cpumask_t cpumask_t; 273150559Snjltypedef struct device *device_t; 274102227Smiketypedef __intfptr_t intfptr_t; 275102421Smike 276102421Smike/*- 277102421Smike * XXX this is fixed width for historical reasons. It should have had type 278102421Smike * __int_fast32_t. Fixed-width types should not be used unless binary 279102421Smike * compatibility is essential. Least-width types should be used even less 280102421Smike * since they provide smaller benefits. 281102421Smike * XXX should be MD. 282102421Smike * XXX this is bogus in -current, but still used for spl*(). 283102421Smike */ 284102421Smiketypedef __uint32_t intrmask_t; /* Interrupt mask (spl, xxx_imask...) */ 285102421Smike 286102227Smiketypedef __uintfptr_t uintfptr_t; 287104341Smiketypedef __uint64_t uoff_t; 28815481Sbdetypedef struct vm_page *vm_page_t; 28912642Sbde 29067708Sphk#define offsetof(type, field) __offsetof(type, field) 29167708Sphk 29255205Speter#endif /* !_KERNEL */ 29346818Sphk 2941541Srgrimes/* 295103867Smike * The following are all things that really shouldn't exist in this header, 296103867Smike * since its purpose is to provide typedefs, not miscellaneous doodads. 2971541Srgrimes */ 298103867Smike#if __BSD_VISIBLE 2991541Srgrimes 300103867Smike#include <sys/select.h> 3011541Srgrimes 302104341Smike#ifndef _KERNEL 30324896Sbde/* 304104341Smike * minor() gives a cookie instead of an index since we don't want to 305104341Smike * change the meanings of bits 0-15 or waste time and space shifting 306104341Smike * bits 16-31 for devices that don't use them. 307104341Smike */ 308104341Smike#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ 309104341Smike#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ 310104341Smike#endif /* !_KERNEL */ 311104341Smike 312130640Sphk#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */ 313130640Sphk 314104341Smike/* 31524896Sbde * These declarations belong elsewhere, but are repeated here and in 31624896Sbde * <stdio.h> to give broken programs a better chance of working with 31724896Sbde * 64-bit off_t's. 31824896Sbde */ 31955205Speter#ifndef _KERNEL 32024896Sbde__BEGIN_DECLS 32124896Sbde#ifndef _FTRUNCATE_DECLARED 32224896Sbde#define _FTRUNCATE_DECLARED 32392719Salfredint ftruncate(int, off_t); 32424896Sbde#endif 32524896Sbde#ifndef _LSEEK_DECLARED 32624896Sbde#define _LSEEK_DECLARED 32792719Salfredoff_t lseek(int, off_t, int); 32824896Sbde#endif 32924896Sbde#ifndef _MMAP_DECLARED 33024896Sbde#define _MMAP_DECLARED 33192719Salfredvoid * mmap(void *, size_t, int, int, int, off_t); 33224896Sbde#endif 33324896Sbde#ifndef _TRUNCATE_DECLARED 33424896Sbde#define _TRUNCATE_DECLARED 33592719Salfredint truncate(const char *, off_t); 33624896Sbde#endif 33724896Sbde__END_DECLS 33855205Speter#endif /* !_KERNEL */ 33924896Sbde 34098271Swollman#endif /* __BSD_VISIBLE */ 3411541Srgrimes 3421541Srgrimes#endif /* !_SYS_TYPES_H_ */ 343