types.h revision 105683
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 105683 2002-10-22 09:57:34Z tjr $ 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 */ 121102227Smiketypedef __critical_t critical_t; /* Critical section value */ 122104341Smiketypedef __int64_t daddr_t; /* disk address */ 123104341Smiketypedef __uint32_t fixpt_t; /* fixed point number */ 12491325Smike 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 145104341Smiketypedef __uint32_t ino_t; /* inode number */ 146102325Smike 147105142Smike#ifndef _KEY_T_DECLARED 148105142Smiketypedef __key_t key_t; /* IPC key (for Sys V IPC) */ 149105142Smike#define _KEY_T_DECLARED 150105142Smike#endif 151105142Smike 152102325Smike#ifndef _MODE_T_DECLARED 153102325Smiketypedef __mode_t mode_t; /* permissions */ 154102325Smike#define _MODE_T_DECLARED 155102325Smike#endif 156102325Smike 157104341Smiketypedef __uint16_t nlink_t; /* link count */ 158102325Smike 159102325Smike#ifndef _OFF_T_DECLARED 160102227Smiketypedef __off_t off_t; /* file offset */ 161102325Smike#define _OFF_T_DECLARED 162102325Smike#endif 163102325Smike 164103457Smike#ifndef _PID_T_DECLARED 165102227Smiketypedef __pid_t pid_t; /* process id */ 166103457Smike#define _PID_T_DECLARED 167103457Smike#endif 168103457Smike 169102227Smiketypedef __register_t register_t; 170105650Smike 171105650Smike#ifndef _RLIM_T_DECLARED 172105650Smiketypedef __rlim_t rlim_t; /* resource limit */ 173105650Smike#define _RLIM_T_DECLARED 174105650Smike#endif 175105650Smike 176102227Smiketypedef __segsz_t segsz_t; /* segment size (in pages) */ 177102227Smiketypedef __u_register_t u_register_t; 17894363Smike 179102227Smike#ifndef _UID_T_DECLARED 180102227Smiketypedef __uid_t uid_t; /* user id */ 181102227Smike#define _UID_T_DECLARED 18236735Sdfr#endif 18394363Smike 184102227Smiketypedef __vm_offset_t vm_offset_t; 185102227Smiketypedef __vm_ooffset_t vm_ooffset_t; 186102227Smiketypedef __vm_pindex_t vm_pindex_t; 187102227Smiketypedef __vm_size_t vm_size_t; 1881541Srgrimes 18955205Speter#ifdef _KERNEL 19015481Sbdetypedef int boolean_t; 191102227Smiketypedef __intfptr_t intfptr_t; 192102421Smike 193102421Smike/*- 194102421Smike * XXX this is fixed width for historical reasons. It should have had type 195102421Smike * __int_fast32_t. Fixed-width types should not be used unless binary 196102421Smike * compatibility is essential. Least-width types should be used even less 197102421Smike * since they provide smaller benefits. 198102421Smike * XXX should be MD. 199102421Smike * XXX this is bogus in -current, but still used for spl*(). 200102421Smike */ 201102421Smiketypedef __uint32_t intrmask_t; /* Interrupt mask (spl, xxx_imask...) */ 202102421Smike 203102227Smiketypedef __uintfptr_t uintfptr_t; 204104341Smiketypedef __uint64_t uoff_t; 20515481Sbdetypedef struct vm_page *vm_page_t; 20612642Sbde 207104043Sphkstruct cdev; 20848936Sphk 209104341Smiketypedef __uint32_t udev_t; /* device number */ 210104043Sphktypedef struct cdev *dev_t; 21147028Sphk 21267708Sphk#define offsetof(type, field) __offsetof(type, field) 21367708Sphk 21455205Speter#else /* !_KERNEL */ 21547028Sphk 216104341Smiketypedef __uint32_t dev_t; /* device number */ 21747049Sphk#define udev_t dev_t 21847028Sphk 21955205Speter#endif /* !_KERNEL */ 22046818Sphk 221102227Smike#ifndef _CLOCK_T_DECLARED 222102227Smiketypedef __clock_t clock_t; 223102227Smike#define _CLOCK_T_DECLARED 2241541Srgrimes#endif 2251541Srgrimes 226102227Smike#ifndef _CLOCKID_T_DECLARED 227102227Smiketypedef __clockid_t clockid_t; 228102227Smike#define _CLOCKID_T_DECLARED 22933778Sbde#endif 23033778Sbde 231102227Smike#ifndef _FFLAGS_T_DECLARED 232102227Smiketypedef __fflags_t fflags_t; /* file flags */ 233102227Smike#define _FFLAGS_T_DECLARED 23490711Swollman#endif 23590711Swollman 23698271Swollman#ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */ 237102227Smiketypedef __fsblkcnt_t fsblkcnt_t; 238102227Smiketypedef __fsfilcnt_t fsfilcnt_t; 239102227Smike#define _FSBLKCNT_T_DECLARED 24098271Swollman#endif 24198271Swollman 242102227Smike#ifndef _SIZE_T_DECLARED 243102227Smiketypedef __size_t size_t; 244102227Smike#define _SIZE_T_DECLARED 2451541Srgrimes#endif 2461541Srgrimes 247102227Smike#ifndef _SSIZE_T_DECLARED 248102227Smiketypedef __ssize_t ssize_t; 249102227Smike#define _SSIZE_T_DECLARED 2501541Srgrimes#endif 2511541Srgrimes 252102227Smike#ifndef _TIME_T_DECLARED 253102227Smiketypedef __time_t time_t; 254102227Smike#define _TIME_T_DECLARED 2551541Srgrimes#endif 2561541Srgrimes 257102227Smike#ifndef _TIMER_T_DECLARED 258102227Smiketypedef __timer_t timer_t; 259102227Smike#define _TIMER_T_DECLARED 26025579Speter#endif 26125579Speter 2621541Srgrimes/* 263103867Smike * The following are all things that really shouldn't exist in this header, 264103867Smike * since its purpose is to provide typedefs, not miscellaneous doodads. 2651541Srgrimes */ 266103867Smike#if __BSD_VISIBLE 2671541Srgrimes 268103867Smike#include <sys/select.h> 2691541Srgrimes 270104341Smike#ifndef _KERNEL 27124896Sbde/* 272104341Smike * minor() gives a cookie instead of an index since we don't want to 273104341Smike * change the meanings of bits 0-15 or waste time and space shifting 274104341Smike * bits 16-31 for devices that don't use them. 275104341Smike */ 276104341Smike#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ 277104341Smike#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ 278104341Smike#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */ 279104341Smike#endif /* !_KERNEL */ 280104341Smike 281104341Smike/* 28224896Sbde * These declarations belong elsewhere, but are repeated here and in 28324896Sbde * <stdio.h> to give broken programs a better chance of working with 28424896Sbde * 64-bit off_t's. 28524896Sbde */ 28655205Speter#ifndef _KERNEL 28724896Sbde__BEGIN_DECLS 28824896Sbde#ifndef _FTRUNCATE_DECLARED 28924896Sbde#define _FTRUNCATE_DECLARED 29092719Salfredint ftruncate(int, off_t); 29124896Sbde#endif 29224896Sbde#ifndef _LSEEK_DECLARED 29324896Sbde#define _LSEEK_DECLARED 29492719Salfredoff_t lseek(int, off_t, int); 29524896Sbde#endif 29624896Sbde#ifndef _MMAP_DECLARED 29724896Sbde#define _MMAP_DECLARED 29892719Salfredvoid * mmap(void *, size_t, int, int, int, off_t); 29924896Sbde#endif 30024896Sbde#ifndef _TRUNCATE_DECLARED 30124896Sbde#define _TRUNCATE_DECLARED 30292719Salfredint truncate(const char *, off_t); 30324896Sbde#endif 30424896Sbde__END_DECLS 30555205Speter#endif /* !_KERNEL */ 30624896Sbde 30798271Swollman#endif /* __BSD_VISIBLE */ 3081541Srgrimes 3091541Srgrimes#endif /* !_SYS_TYPES_H_ */ 310