types.h revision 110051
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 * 3. All advertising materials mentioning features or use of this software 191541Srgrimes * must display the following acknowledgement: 201541Srgrimes * This product includes software developed by the University of 211541Srgrimes * California, Berkeley and its contributors. 221541Srgrimes * 4. Neither the name of the University nor the names of its contributors 231541Srgrimes * may be used to endorse or promote products derived from this software 241541Srgrimes * without specific prior written permission. 251541Srgrimes * 261541Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 271541Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 281541Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 291541Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 301541Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 311541Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 321541Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 331541Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 341541Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 351541Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 361541Srgrimes * SUCH DAMAGE. 371541Srgrimes * 3814500Shsu * @(#)types.h 8.6 (Berkeley) 2/19/95 3950477Speter * $FreeBSD: head/sys/sys/types.h 110051 2003-01-29 19:36:08Z mike $ 401541Srgrimes */ 411541Srgrimes 421541Srgrimes#ifndef _SYS_TYPES_H_ 431541Srgrimes#define _SYS_TYPES_H_ 441541Srgrimes 4533778Sbde#include <sys/cdefs.h> 4633778Sbde 471541Srgrimes/* Machine type dependent parameters. */ 4890868Smike#include <machine/endian.h> 4993514Smike#include <sys/_types.h> 501541Srgrimes 51104341Smike#if __BSD_VISIBLE 521541Srgrimestypedef unsigned char u_char; 531541Srgrimestypedef unsigned short u_short; 541541Srgrimestypedef unsigned int u_int; 551541Srgrimestypedef unsigned long u_long; 561541Srgrimestypedef unsigned short ushort; /* Sys V compatibility */ 571541Srgrimestypedef unsigned int uint; /* Sys V compatibility */ 581541Srgrimes#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 122110051Smike#ifndef _CLOCK_T_DECLARED 123110051Smiketypedef __clock_t clock_t; 124110051Smike#define _CLOCK_T_DECLARED 125110051Smike#endif 126110051Smike 127110051Smike#ifndef _CLOCKID_T_DECLARED 128110051Smiketypedef __clockid_t clockid_t; 129110051Smike#define _CLOCKID_T_DECLARED 130110051Smike#endif 131110051Smike 132102227Smiketypedef __critical_t critical_t; /* Critical section value */ 133104341Smiketypedef __int64_t daddr_t; /* disk address */ 134110051Smike 135110051Smike#ifndef _FFLAGS_T_DECLARED 136110051Smiketypedef __fflags_t fflags_t; /* file flags */ 137110051Smike#define _FFLAGS_T_DECLARED 138110051Smike#endif 139110051Smike 140104341Smiketypedef __uint32_t fixpt_t; /* fixed point number */ 14191325Smike 142110051Smike#ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */ 143110051Smiketypedef __fsblkcnt_t fsblkcnt_t; 144110051Smiketypedef __fsfilcnt_t fsfilcnt_t; 145110051Smike#define _FSBLKCNT_T_DECLARED 146110051Smike#endif 147110051Smike 148102227Smike#ifndef _GID_T_DECLARED 149102227Smiketypedef __gid_t gid_t; /* group id */ 150102227Smike#define _GID_T_DECLARED 15191325Smike#endif 15291325Smike 153105683Stjr#ifndef _IN_ADDR_T_DECLARED 154105683Stjrtypedef __uint32_t in_addr_t; /* base type for internet address */ 155105683Stjr#define _IN_ADDR_T_DECLARED 156105683Stjr#endif 157105683Stjr 158105683Stjr#ifndef _IN_PORT_T_DECLARED 159105683Stjrtypedef __uint16_t in_port_t; 160105683Stjr#define _IN_PORT_T_DECLARED 161105683Stjr#endif 162105683Stjr 163105650Smike#ifndef _ID_T_DECLARED 164105650Smiketypedef __id_t id_t; /* can hold a uid_t or pid_t */ 165105650Smike#define _ID_T_DECLARED 166105650Smike#endif 167105650Smike 168104341Smiketypedef __uint32_t ino_t; /* inode number */ 169102325Smike 170105142Smike#ifndef _KEY_T_DECLARED 171105142Smiketypedef __key_t key_t; /* IPC key (for Sys V IPC) */ 172105142Smike#define _KEY_T_DECLARED 173105142Smike#endif 174105142Smike 175102325Smike#ifndef _MODE_T_DECLARED 176102325Smiketypedef __mode_t mode_t; /* permissions */ 177102325Smike#define _MODE_T_DECLARED 178102325Smike#endif 179102325Smike 180104341Smiketypedef __uint16_t nlink_t; /* link count */ 181102325Smike 182102325Smike#ifndef _OFF_T_DECLARED 183102227Smiketypedef __off_t off_t; /* file offset */ 184102325Smike#define _OFF_T_DECLARED 185102325Smike#endif 186102325Smike 187103457Smike#ifndef _PID_T_DECLARED 188102227Smiketypedef __pid_t pid_t; /* process id */ 189103457Smike#define _PID_T_DECLARED 190103457Smike#endif 191103457Smike 192102227Smiketypedef __register_t register_t; 193105650Smike 194105650Smike#ifndef _RLIM_T_DECLARED 195105650Smiketypedef __rlim_t rlim_t; /* resource limit */ 196105650Smike#define _RLIM_T_DECLARED 197105650Smike#endif 198105650Smike 199102227Smiketypedef __segsz_t segsz_t; /* segment size (in pages) */ 200108190Smike 201110051Smike#ifndef _SIZE_T_DECLARED 202110051Smiketypedef __size_t size_t; 203110051Smike#define _SIZE_T_DECLARED 204110051Smike#endif 205110051Smike 206110051Smike#ifndef _SSIZE_T_DECLARED 207110051Smiketypedef __ssize_t ssize_t; 208110051Smike#define _SSIZE_T_DECLARED 209110051Smike#endif 210110051Smike 211108190Smike#ifndef _SUSECONDS_T_DECLARED 212108190Smiketypedef __suseconds_t suseconds_t; /* microseconds (signed) */ 213108190Smike#define _SUSECONDS_T_DECLARED 214108190Smike#endif 215108190Smike 216110051Smike#ifndef _TIME_T_DECLARED 217110051Smiketypedef __time_t time_t; 218110051Smike#define _TIME_T_DECLARED 219110051Smike#endif 220110051Smike 221110051Smike#ifndef _TIMER_T_DECLARED 222110051Smiketypedef __timer_t timer_t; 223110051Smike#define _TIMER_T_DECLARED 224110051Smike#endif 225110051Smike 226102227Smiketypedef __u_register_t u_register_t; 22794363Smike 228102227Smike#ifndef _UID_T_DECLARED 229102227Smiketypedef __uid_t uid_t; /* user id */ 230102227Smike#define _UID_T_DECLARED 23136735Sdfr#endif 23294363Smike 233108190Smike#ifndef _USECONDS_T_DECLARED 234108190Smiketypedef __useconds_t useconds_t; /* microseconds (unsigned) */ 235108190Smike#define _USECONDS_T_DECLARED 236108190Smike#endif 237108190Smike 238102227Smiketypedef __vm_offset_t vm_offset_t; 239102227Smiketypedef __vm_ooffset_t vm_ooffset_t; 240102227Smiketypedef __vm_pindex_t vm_pindex_t; 241102227Smiketypedef __vm_size_t vm_size_t; 2421541Srgrimes 24355205Speter#ifdef _KERNEL 24415481Sbdetypedef int boolean_t; 245102227Smiketypedef __intfptr_t intfptr_t; 246102421Smike 247102421Smike/*- 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. 252102421Smike * XXX should be MD. 253102421Smike * XXX this is bogus in -current, but still used for spl*(). 254102421Smike */ 255102421Smiketypedef __uint32_t intrmask_t; /* Interrupt mask (spl, xxx_imask...) */ 256102421Smike 257102227Smiketypedef __uintfptr_t uintfptr_t; 258104341Smiketypedef __uint64_t uoff_t; 25915481Sbdetypedef struct vm_page *vm_page_t; 26012642Sbde 261104043Sphkstruct cdev; 26248936Sphk 263104341Smiketypedef __uint32_t udev_t; /* device number */ 264104043Sphktypedef struct cdev *dev_t; 26547028Sphk 26667708Sphk#define offsetof(type, field) __offsetof(type, field) 26767708Sphk 26855205Speter#else /* !_KERNEL */ 26947028Sphk 270104341Smiketypedef __uint32_t dev_t; /* device number */ 27147049Sphk#define udev_t dev_t 27247028Sphk 27355205Speter#endif /* !_KERNEL */ 27446818Sphk 2751541Srgrimes/* 276103867Smike * The following are all things that really shouldn't exist in this header, 277103867Smike * since its purpose is to provide typedefs, not miscellaneous doodads. 2781541Srgrimes */ 279103867Smike#if __BSD_VISIBLE 2801541Srgrimes 281103867Smike#include <sys/select.h> 2821541Srgrimes 283104341Smike#ifndef _KERNEL 28424896Sbde/* 285104341Smike * minor() gives a cookie instead of an index since we don't want to 286104341Smike * change the meanings of bits 0-15 or waste time and space shifting 287104341Smike * bits 16-31 for devices that don't use them. 288104341Smike */ 289104341Smike#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ 290104341Smike#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ 291104341Smike#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */ 292104341Smike#endif /* !_KERNEL */ 293104341Smike 294104341Smike/* 29524896Sbde * These declarations belong elsewhere, but are repeated here and in 29624896Sbde * <stdio.h> to give broken programs a better chance of working with 29724896Sbde * 64-bit off_t's. 29824896Sbde */ 29955205Speter#ifndef _KERNEL 30024896Sbde__BEGIN_DECLS 30124896Sbde#ifndef _FTRUNCATE_DECLARED 30224896Sbde#define _FTRUNCATE_DECLARED 30392719Salfredint ftruncate(int, off_t); 30424896Sbde#endif 30524896Sbde#ifndef _LSEEK_DECLARED 30624896Sbde#define _LSEEK_DECLARED 30792719Salfredoff_t lseek(int, off_t, int); 30824896Sbde#endif 30924896Sbde#ifndef _MMAP_DECLARED 31024896Sbde#define _MMAP_DECLARED 31192719Salfredvoid * mmap(void *, size_t, int, int, int, off_t); 31224896Sbde#endif 31324896Sbde#ifndef _TRUNCATE_DECLARED 31424896Sbde#define _TRUNCATE_DECLARED 31592719Salfredint truncate(const char *, off_t); 31624896Sbde#endif 31724896Sbde__END_DECLS 31855205Speter#endif /* !_KERNEL */ 31924896Sbde 32098271Swollman#endif /* __BSD_VISIBLE */ 3211541Srgrimes 3221541Srgrimes#endif /* !_SYS_TYPES_H_ */ 323