types.h revision 143952
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 143952 2005-03-22 01:19:18Z das $ 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 47104341Smike#if __BSD_VISIBLE 481541Srgrimestypedef unsigned char u_char; 491541Srgrimestypedef unsigned short u_short; 501541Srgrimestypedef unsigned int u_int; 511541Srgrimestypedef unsigned long u_long; 52128448Sobrien#ifndef _KERNEL 531541Srgrimestypedef unsigned short ushort; /* Sys V compatibility */ 541541Srgrimestypedef unsigned int uint; /* Sys V compatibility */ 551541Srgrimes#endif 56128448Sobrien#endif 571541Srgrimes 5893514Smike/* 5993514Smike * XXX POSIX sized integrals that should appear only in <sys/stdint.h>. 6093514Smike */ 6193514Smike#ifndef _INT8_T_DECLARED 6293514Smiketypedef __int8_t int8_t; 6393514Smike#define _INT8_T_DECLARED 6493514Smike#endif 6593514Smike 6693514Smike#ifndef _INT16_T_DECLARED 6793514Smiketypedef __int16_t int16_t; 6893514Smike#define _INT16_T_DECLARED 6993514Smike#endif 7093514Smike 7193514Smike#ifndef _INT32_T_DECLARED 7293514Smiketypedef __int32_t int32_t; 7393514Smike#define _INT32_T_DECLARED 7493514Smike#endif 7593514Smike 7693514Smike#ifndef _INT64_T_DECLARED 7793514Smiketypedef __int64_t int64_t; 7893514Smike#define _INT64_T_DECLARED 7993514Smike#endif 8093514Smike 8193514Smike#ifndef _UINT8_T_DECLARED 8293514Smiketypedef __uint8_t uint8_t; 8393514Smike#define _UINT8_T_DECLARED 8493514Smike#endif 8593514Smike 8693514Smike#ifndef _UINT16_T_DECLARED 8793514Smiketypedef __uint16_t uint16_t; 8893514Smike#define _UINT16_T_DECLARED 8993514Smike#endif 9093514Smike 9193514Smike#ifndef _UINT32_T_DECLARED 9293514Smiketypedef __uint32_t uint32_t; 9393514Smike#define _UINT32_T_DECLARED 9493514Smike#endif 9593514Smike 9693514Smike#ifndef _UINT64_T_DECLARED 9793514Smiketypedef __uint64_t uint64_t; 9893514Smike#define _UINT64_T_DECLARED 9993514Smike#endif 10093514Smike 10193514Smike#ifndef _INTPTR_T_DECLARED 10293514Smiketypedef __intptr_t intptr_t; 10393514Smiketypedef __uintptr_t uintptr_t; 10493514Smike#define _INTPTR_T_DECLARED 10593514Smike#endif 10693514Smike 107104341Smiketypedef __uint8_t u_int8_t; /* unsigned integrals (deprecated) */ 10841927Sdttypedef __uint16_t u_int16_t; 10941927Sdttypedef __uint32_t u_int32_t; 11041927Sdttypedef __uint64_t u_int64_t; 11141927Sdt 112104341Smiketypedef __uint64_t u_quad_t; /* quads (deprecated) */ 113104341Smiketypedef __int64_t quad_t; 1141541Srgrimestypedef quad_t * qaddr_t; 1151541Srgrimes 1161541Srgrimestypedef char * caddr_t; /* core address */ 11751901Smarceltypedef __const char * c_caddr_t; /* core address, pointer to const */ 11851901Smarceltypedef __volatile char *v_caddr_t; /* core address, pointer to volatile */ 119110051Smike 120143952Sdas#ifndef _BLKSIZE_T_DECLARED 121143952Sdastypedef __blksize_t blksize_t; 122143952Sdas#define _BLKSIZE_T_DECLARED 123143952Sdas#endif 124143952Sdas 125143952Sdas#ifndef _BLKCNT_T_DECLARED 126143952Sdastypedef __blkcnt_t blkcnt_t; 127143952Sdas#define _BLKCNT_T_DECLARED 128143952Sdas#endif 129143952Sdas 130110051Smike#ifndef _CLOCK_T_DECLARED 131110051Smiketypedef __clock_t clock_t; 132110051Smike#define _CLOCK_T_DECLARED 133110051Smike#endif 134110051Smike 135110051Smike#ifndef _CLOCKID_T_DECLARED 136110051Smiketypedef __clockid_t clockid_t; 137110051Smike#define _CLOCKID_T_DECLARED 138110051Smike#endif 139110051Smike 140102227Smiketypedef __critical_t critical_t; /* Critical section value */ 141104341Smiketypedef __int64_t daddr_t; /* disk address */ 142110051Smike 143112745Smike#ifndef _DEV_T_DECLARED 144112745Smiketypedef __dev_t dev_t; /* device number or struct cdev */ 145112745Smike#define _DEV_T_DECLARED 146112745Smike#endif 147112745Smike 148110051Smike#ifndef _FFLAGS_T_DECLARED 149110051Smiketypedef __fflags_t fflags_t; /* file flags */ 150110051Smike#define _FFLAGS_T_DECLARED 151110051Smike#endif 152110051Smike 153130434Sdastypedef __fixpt_t fixpt_t; /* fixed point number */ 15491325Smike 155110051Smike#ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */ 156110051Smiketypedef __fsblkcnt_t fsblkcnt_t; 157110051Smiketypedef __fsfilcnt_t fsfilcnt_t; 158110051Smike#define _FSBLKCNT_T_DECLARED 159110051Smike#endif 160110051Smike 161102227Smike#ifndef _GID_T_DECLARED 162102227Smiketypedef __gid_t gid_t; /* group id */ 163102227Smike#define _GID_T_DECLARED 16491325Smike#endif 16591325Smike 166105683Stjr#ifndef _IN_ADDR_T_DECLARED 167105683Stjrtypedef __uint32_t in_addr_t; /* base type for internet address */ 168105683Stjr#define _IN_ADDR_T_DECLARED 169105683Stjr#endif 170105683Stjr 171105683Stjr#ifndef _IN_PORT_T_DECLARED 172105683Stjrtypedef __uint16_t in_port_t; 173105683Stjr#define _IN_PORT_T_DECLARED 174105683Stjr#endif 175105683Stjr 176105650Smike#ifndef _ID_T_DECLARED 177105650Smiketypedef __id_t id_t; /* can hold a uid_t or pid_t */ 178105650Smike#define _ID_T_DECLARED 179105650Smike#endif 180105650Smike 181111705Smike#ifndef _INO_T_DECLARED 182111705Smiketypedef __ino_t ino_t; /* inode number */ 183111705Smike#define _INO_T_DECLARED 184111705Smike#endif 185102325Smike 186105142Smike#ifndef _KEY_T_DECLARED 187105142Smiketypedef __key_t key_t; /* IPC key (for Sys V IPC) */ 188105142Smike#define _KEY_T_DECLARED 189105142Smike#endif 190105142Smike 191130735Smarcel#ifndef _LWPID_T_DECLARED 192130735Smarceltypedef __lwpid_t lwpid_t; /* Thread ID (a.k.a. LWP) */ 193130735Smarcel#define _LWPID_T_DECLARED 194130735Smarcel#endif 195130735Smarcel 196102325Smike#ifndef _MODE_T_DECLARED 197102325Smiketypedef __mode_t mode_t; /* permissions */ 198102325Smike#define _MODE_T_DECLARED 199102325Smike#endif 200102325Smike 201111705Smike#ifndef _NLINK_T_DECLARED 202111705Smiketypedef __nlink_t nlink_t; /* link count */ 203111705Smike#define _NLINK_T_DECLARED 204111705Smike#endif 205102325Smike 206102325Smike#ifndef _OFF_T_DECLARED 207102227Smiketypedef __off_t off_t; /* file offset */ 208102325Smike#define _OFF_T_DECLARED 209102325Smike#endif 210102325Smike 211103457Smike#ifndef _PID_T_DECLARED 212102227Smiketypedef __pid_t pid_t; /* process id */ 213103457Smike#define _PID_T_DECLARED 214103457Smike#endif 215103457Smike 216102227Smiketypedef __register_t register_t; 217105650Smike 218105650Smike#ifndef _RLIM_T_DECLARED 219105650Smiketypedef __rlim_t rlim_t; /* resource limit */ 220105650Smike#define _RLIM_T_DECLARED 221105650Smike#endif 222105650Smike 223102227Smiketypedef __segsz_t segsz_t; /* segment size (in pages) */ 224108190Smike 225110051Smike#ifndef _SIZE_T_DECLARED 226110051Smiketypedef __size_t size_t; 227110051Smike#define _SIZE_T_DECLARED 228110051Smike#endif 229110051Smike 230110051Smike#ifndef _SSIZE_T_DECLARED 231110051Smiketypedef __ssize_t ssize_t; 232110051Smike#define _SSIZE_T_DECLARED 233110051Smike#endif 234110051Smike 235108190Smike#ifndef _SUSECONDS_T_DECLARED 236108190Smiketypedef __suseconds_t suseconds_t; /* microseconds (signed) */ 237108190Smike#define _SUSECONDS_T_DECLARED 238108190Smike#endif 239108190Smike 240110051Smike#ifndef _TIME_T_DECLARED 241110051Smiketypedef __time_t time_t; 242110051Smike#define _TIME_T_DECLARED 243110051Smike#endif 244110051Smike 245110051Smike#ifndef _TIMER_T_DECLARED 246110051Smiketypedef __timer_t timer_t; 247110051Smike#define _TIMER_T_DECLARED 248110051Smike#endif 249110051Smike 250102227Smiketypedef __u_register_t u_register_t; 25194363Smike 252102227Smike#ifndef _UID_T_DECLARED 253102227Smiketypedef __uid_t uid_t; /* user id */ 254102227Smike#define _UID_T_DECLARED 25536735Sdfr#endif 25694363Smike 257108190Smike#ifndef _USECONDS_T_DECLARED 258108190Smiketypedef __useconds_t useconds_t; /* microseconds (unsigned) */ 259108190Smike#define _USECONDS_T_DECLARED 260108190Smike#endif 261108190Smike 262102227Smiketypedef __vm_offset_t vm_offset_t; 263102227Smiketypedef __vm_ooffset_t vm_ooffset_t; 264112569Sjaketypedef __vm_paddr_t vm_paddr_t; 265102227Smiketypedef __vm_pindex_t vm_pindex_t; 266102227Smiketypedef __vm_size_t vm_size_t; 2671541Srgrimes 26855205Speter#ifdef _KERNEL 26915481Sbdetypedef int boolean_t; 270127239Smarceltypedef __cpumask_t cpumask_t; 271102227Smiketypedef __intfptr_t intfptr_t; 272102421Smike 273102421Smike/*- 274102421Smike * XXX this is fixed width for historical reasons. It should have had type 275102421Smike * __int_fast32_t. Fixed-width types should not be used unless binary 276102421Smike * compatibility is essential. Least-width types should be used even less 277102421Smike * since they provide smaller benefits. 278102421Smike * XXX should be MD. 279102421Smike * XXX this is bogus in -current, but still used for spl*(). 280102421Smike */ 281102421Smiketypedef __uint32_t intrmask_t; /* Interrupt mask (spl, xxx_imask...) */ 282102421Smike 283102227Smiketypedef __uintfptr_t uintfptr_t; 284104341Smiketypedef __uint64_t uoff_t; 28515481Sbdetypedef struct vm_page *vm_page_t; 28612642Sbde 28767708Sphk#define offsetof(type, field) __offsetof(type, field) 28867708Sphk 28955205Speter#endif /* !_KERNEL */ 29046818Sphk 2911541Srgrimes/* 292103867Smike * The following are all things that really shouldn't exist in this header, 293103867Smike * since its purpose is to provide typedefs, not miscellaneous doodads. 2941541Srgrimes */ 295103867Smike#if __BSD_VISIBLE 2961541Srgrimes 297103867Smike#include <sys/select.h> 2981541Srgrimes 299104341Smike#ifndef _KERNEL 30024896Sbde/* 301104341Smike * minor() gives a cookie instead of an index since we don't want to 302104341Smike * change the meanings of bits 0-15 or waste time and space shifting 303104341Smike * bits 16-31 for devices that don't use them. 304104341Smike */ 305104341Smike#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ 306104341Smike#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ 307104341Smike#endif /* !_KERNEL */ 308104341Smike 309130640Sphk#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */ 310130640Sphk 311104341Smike/* 31224896Sbde * These declarations belong elsewhere, but are repeated here and in 31324896Sbde * <stdio.h> to give broken programs a better chance of working with 31424896Sbde * 64-bit off_t's. 31524896Sbde */ 31655205Speter#ifndef _KERNEL 31724896Sbde__BEGIN_DECLS 31824896Sbde#ifndef _FTRUNCATE_DECLARED 31924896Sbde#define _FTRUNCATE_DECLARED 32092719Salfredint ftruncate(int, off_t); 32124896Sbde#endif 32224896Sbde#ifndef _LSEEK_DECLARED 32324896Sbde#define _LSEEK_DECLARED 32492719Salfredoff_t lseek(int, off_t, int); 32524896Sbde#endif 32624896Sbde#ifndef _MMAP_DECLARED 32724896Sbde#define _MMAP_DECLARED 32892719Salfredvoid * mmap(void *, size_t, int, int, int, off_t); 32924896Sbde#endif 33024896Sbde#ifndef _TRUNCATE_DECLARED 33124896Sbde#define _TRUNCATE_DECLARED 33292719Salfredint truncate(const char *, off_t); 33324896Sbde#endif 33424896Sbde__END_DECLS 33555205Speter#endif /* !_KERNEL */ 33624896Sbde 33798271Swollman#endif /* __BSD_VISIBLE */ 3381541Srgrimes 3391541Srgrimes#endif /* !_SYS_TYPES_H_ */ 340