types.h revision 228444
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 228444 2011-12-12 18:44:17Z mdf $ 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 */ 63221502Sobrien#include <sys/_stdint.h> 6493514Smike 65104341Smiketypedef __uint8_t u_int8_t; /* unsigned integrals (deprecated) */ 6641927Sdttypedef __uint16_t u_int16_t; 6741927Sdttypedef __uint32_t u_int32_t; 6841927Sdttypedef __uint64_t u_int64_t; 6941927Sdt 70104341Smiketypedef __uint64_t u_quad_t; /* quads (deprecated) */ 71104341Smiketypedef __int64_t quad_t; 721541Srgrimestypedef quad_t * qaddr_t; 731541Srgrimes 741541Srgrimestypedef char * caddr_t; /* core address */ 7551901Smarceltypedef __const char * c_caddr_t; /* core address, pointer to const */ 7651901Smarceltypedef __volatile char *v_caddr_t; /* core address, pointer to volatile */ 77110051Smike 78143952Sdas#ifndef _BLKSIZE_T_DECLARED 79143952Sdastypedef __blksize_t blksize_t; 80143952Sdas#define _BLKSIZE_T_DECLARED 81143952Sdas#endif 82143952Sdas 83176730Sjefftypedef __cpuwhich_t cpuwhich_t; 84176730Sjefftypedef __cpulevel_t cpulevel_t; 85176730Sjefftypedef __cpusetid_t cpusetid_t; 86176730Sjeff 87143952Sdas#ifndef _BLKCNT_T_DECLARED 88143952Sdastypedef __blkcnt_t blkcnt_t; 89143952Sdas#define _BLKCNT_T_DECLARED 90143952Sdas#endif 91143952Sdas 92223710Sjonathantypedef __cap_rights_t cap_rights_t; 93223710Sjonathan 94110051Smike#ifndef _CLOCK_T_DECLARED 95110051Smiketypedef __clock_t clock_t; 96110051Smike#define _CLOCK_T_DECLARED 97110051Smike#endif 98110051Smike 99110051Smike#ifndef _CLOCKID_T_DECLARED 100110051Smiketypedef __clockid_t clockid_t; 101110051Smike#define _CLOCKID_T_DECLARED 102110051Smike#endif 103110051Smike 104102227Smiketypedef __critical_t critical_t; /* Critical section value */ 105104341Smiketypedef __int64_t daddr_t; /* disk address */ 106110051Smike 107112745Smike#ifndef _DEV_T_DECLARED 108112745Smiketypedef __dev_t dev_t; /* device number or struct cdev */ 109112745Smike#define _DEV_T_DECLARED 110112745Smike#endif 111112745Smike 112110051Smike#ifndef _FFLAGS_T_DECLARED 113110051Smiketypedef __fflags_t fflags_t; /* file flags */ 114110051Smike#define _FFLAGS_T_DECLARED 115110051Smike#endif 116110051Smike 117130434Sdastypedef __fixpt_t fixpt_t; /* fixed point number */ 11891325Smike 119110051Smike#ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */ 120110051Smiketypedef __fsblkcnt_t fsblkcnt_t; 121110051Smiketypedef __fsfilcnt_t fsfilcnt_t; 122110051Smike#define _FSBLKCNT_T_DECLARED 123110051Smike#endif 124110051Smike 125102227Smike#ifndef _GID_T_DECLARED 126102227Smiketypedef __gid_t gid_t; /* group id */ 127102227Smike#define _GID_T_DECLARED 12891325Smike#endif 12991325Smike 130105683Stjr#ifndef _IN_ADDR_T_DECLARED 131105683Stjrtypedef __uint32_t in_addr_t; /* base type for internet address */ 132105683Stjr#define _IN_ADDR_T_DECLARED 133105683Stjr#endif 134105683Stjr 135105683Stjr#ifndef _IN_PORT_T_DECLARED 136105683Stjrtypedef __uint16_t in_port_t; 137105683Stjr#define _IN_PORT_T_DECLARED 138105683Stjr#endif 139105683Stjr 140105650Smike#ifndef _ID_T_DECLARED 141105650Smiketypedef __id_t id_t; /* can hold a uid_t or pid_t */ 142105650Smike#define _ID_T_DECLARED 143105650Smike#endif 144105650Smike 145111705Smike#ifndef _INO_T_DECLARED 146111705Smiketypedef __ino_t ino_t; /* inode number */ 147111705Smike#define _INO_T_DECLARED 148111705Smike#endif 149102325Smike 150105142Smike#ifndef _KEY_T_DECLARED 151105142Smiketypedef __key_t key_t; /* IPC key (for Sys V IPC) */ 152105142Smike#define _KEY_T_DECLARED 153105142Smike#endif 154105142Smike 155130735Smarcel#ifndef _LWPID_T_DECLARED 156130735Smarceltypedef __lwpid_t lwpid_t; /* Thread ID (a.k.a. LWP) */ 157130735Smarcel#define _LWPID_T_DECLARED 158130735Smarcel#endif 159130735Smarcel 160102325Smike#ifndef _MODE_T_DECLARED 161102325Smiketypedef __mode_t mode_t; /* permissions */ 162102325Smike#define _MODE_T_DECLARED 163102325Smike#endif 164102325Smike 165184413Strasz#ifndef _ACCMODE_T_DECLARED 166184413Strasztypedef __accmode_t accmode_t; /* access permissions */ 167184413Strasz#define _ACCMODE_T_DECLARED 168184413Strasz#endif 169184413Strasz 170111705Smike#ifndef _NLINK_T_DECLARED 171111705Smiketypedef __nlink_t nlink_t; /* link count */ 172111705Smike#define _NLINK_T_DECLARED 173111705Smike#endif 174102325Smike 175102325Smike#ifndef _OFF_T_DECLARED 176102227Smiketypedef __off_t off_t; /* file offset */ 177102325Smike#define _OFF_T_DECLARED 178102325Smike#endif 179102325Smike 180103457Smike#ifndef _PID_T_DECLARED 181102227Smiketypedef __pid_t pid_t; /* process id */ 182103457Smike#define _PID_T_DECLARED 183103457Smike#endif 184103457Smike 185102227Smiketypedef __register_t register_t; 186105650Smike 187105650Smike#ifndef _RLIM_T_DECLARED 188105650Smiketypedef __rlim_t rlim_t; /* resource limit */ 189105650Smike#define _RLIM_T_DECLARED 190105650Smike#endif 191105650Smike 192102227Smiketypedef __segsz_t segsz_t; /* segment size (in pages) */ 193108190Smike 194110051Smike#ifndef _SIZE_T_DECLARED 195110051Smiketypedef __size_t size_t; 196110051Smike#define _SIZE_T_DECLARED 197110051Smike#endif 198110051Smike 199110051Smike#ifndef _SSIZE_T_DECLARED 200110051Smiketypedef __ssize_t ssize_t; 201110051Smike#define _SSIZE_T_DECLARED 202110051Smike#endif 203110051Smike 204108190Smike#ifndef _SUSECONDS_T_DECLARED 205108190Smiketypedef __suseconds_t suseconds_t; /* microseconds (signed) */ 206108190Smike#define _SUSECONDS_T_DECLARED 207108190Smike#endif 208108190Smike 209110051Smike#ifndef _TIME_T_DECLARED 210110051Smiketypedef __time_t time_t; 211110051Smike#define _TIME_T_DECLARED 212110051Smike#endif 213110051Smike 214110051Smike#ifndef _TIMER_T_DECLARED 215110051Smiketypedef __timer_t timer_t; 216110051Smike#define _TIMER_T_DECLARED 217110051Smike#endif 218110051Smike 219152825Sdavidxu#ifndef _MQD_T_DECLARED 220152825Sdavidxutypedef __mqd_t mqd_t; 221152825Sdavidxu#define _MQD_T_DECLARED 222152825Sdavidxu#endif 223152825Sdavidxu 224102227Smiketypedef __u_register_t u_register_t; 22594363Smike 226102227Smike#ifndef _UID_T_DECLARED 227102227Smiketypedef __uid_t uid_t; /* user id */ 228102227Smike#define _UID_T_DECLARED 22936735Sdfr#endif 23094363Smike 231108190Smike#ifndef _USECONDS_T_DECLARED 232108190Smiketypedef __useconds_t useconds_t; /* microseconds (unsigned) */ 233108190Smike#define _USECONDS_T_DECLARED 234108190Smike#endif 235108190Smike 236102227Smiketypedef __vm_offset_t vm_offset_t; 237102227Smiketypedef __vm_ooffset_t vm_ooffset_t; 238112569Sjaketypedef __vm_paddr_t vm_paddr_t; 239102227Smiketypedef __vm_pindex_t vm_pindex_t; 240102227Smiketypedef __vm_size_t vm_size_t; 2411541Srgrimes 24255205Speter#ifdef _KERNEL 24315481Sbdetypedef int boolean_t; 244150559Snjltypedef struct device *device_t; 245102227Smiketypedef __intfptr_t intfptr_t; 246102421Smike 247210365Strasz/* 248102421Smike * XXX this is fixed width for historical reasons. It should have had type 249102421Smike * __int_fast32_t. Fixed-width types should not be used unless binary 250102421Smike * compatibility is essential. Least-width types should be used even less 251102421Smike * since they provide smaller benefits. 252210365Strasz * 253102421Smike * XXX should be MD. 254210365Strasz * 255102421Smike * XXX this is bogus in -current, but still used for spl*(). 256102421Smike */ 257102421Smiketypedef __uint32_t intrmask_t; /* Interrupt mask (spl, xxx_imask...) */ 258102421Smike 259102227Smiketypedef __uintfptr_t uintfptr_t; 260104341Smiketypedef __uint64_t uoff_t; 261196615Sjhbtypedef char vm_memattr_t; /* memory attribute codes */ 26215481Sbdetypedef struct vm_page *vm_page_t; 26312642Sbde 264228444Smdf#if !defined(__bool_true_false_are_defined) && !defined(__cplusplus) 265228444Smdf#define __bool_true_false_are_defined 1 266228444Smdf#define false 0 267228444Smdf#define true 1 268228444Smdf#if __STDC_VERSION__ < 199901L && __GNUC__ < 3 && !defined(__INTEL_COMPILER) 269228444Smdftypedef int _Bool; 270228444Smdf#endif 271228444Smdftypedef _Bool bool; 272228444Smdf#endif /* !__bool_true_false_are_defined && !__cplusplus */ 273228444Smdf 27467708Sphk#define offsetof(type, field) __offsetof(type, field) 27567708Sphk 27655205Speter#endif /* !_KERNEL */ 27746818Sphk 2781541Srgrimes/* 279103867Smike * The following are all things that really shouldn't exist in this header, 280103867Smike * since its purpose is to provide typedefs, not miscellaneous doodads. 2811541Srgrimes */ 282103867Smike#if __BSD_VISIBLE 2831541Srgrimes 284103867Smike#include <sys/select.h> 2851541Srgrimes 28624896Sbde/* 287104341Smike * minor() gives a cookie instead of an index since we don't want to 288104341Smike * change the meanings of bits 0-15 or waste time and space shifting 289104341Smike * bits 16-31 for devices that don't use them. 290104341Smike */ 291187830Sed#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ 292183406Sed#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ 293183406Sed#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */ 294104341Smike 295104341Smike/* 29624896Sbde * These declarations belong elsewhere, but are repeated here and in 29724896Sbde * <stdio.h> to give broken programs a better chance of working with 29824896Sbde * 64-bit off_t's. 29924896Sbde */ 30055205Speter#ifndef _KERNEL 30124896Sbde__BEGIN_DECLS 30224896Sbde#ifndef _FTRUNCATE_DECLARED 30324896Sbde#define _FTRUNCATE_DECLARED 30492719Salfredint ftruncate(int, off_t); 30524896Sbde#endif 30624896Sbde#ifndef _LSEEK_DECLARED 30724896Sbde#define _LSEEK_DECLARED 30892719Salfredoff_t lseek(int, off_t, int); 30924896Sbde#endif 31024896Sbde#ifndef _MMAP_DECLARED 31124896Sbde#define _MMAP_DECLARED 31292719Salfredvoid * mmap(void *, size_t, int, int, int, off_t); 31324896Sbde#endif 31424896Sbde#ifndef _TRUNCATE_DECLARED 31524896Sbde#define _TRUNCATE_DECLARED 31692719Salfredint truncate(const char *, off_t); 31724896Sbde#endif 31824896Sbde__END_DECLS 31955205Speter#endif /* !_KERNEL */ 32024896Sbde 32198271Swollman#endif /* __BSD_VISIBLE */ 3221541Srgrimes 3231541Srgrimes#endif /* !_SYS_TYPES_H_ */ 324