1#ifndef _LINUX_TYPES_H 2#define _LINUX_TYPES_H 3 4#ifdef __KERNEL__ 5#include <linux/config.h> 6 7#define bitmap_member(name,bits) \ 8 unsigned long name[((bits)+BITS_PER_LONG-1)/BITS_PER_LONG] 9#endif 10 11#include <linux/posix_types.h> 12#include <asm/types.h> 13 14#ifndef __KERNEL_STRICT_NAMES 15 16typedef __kernel_fd_set fd_set; 17typedef __kernel_dev_t dev_t; 18typedef __kernel_ino_t ino_t; 19typedef __kernel_mode_t mode_t; 20typedef __kernel_nlink_t nlink_t; 21typedef __kernel_off_t off_t; 22typedef __kernel_pid_t pid_t; 23typedef __kernel_daddr_t daddr_t; 24typedef __kernel_key_t key_t; 25typedef __kernel_suseconds_t suseconds_t; 26 27#ifdef __KERNEL__ 28typedef __kernel_uid32_t uid_t; 29typedef __kernel_gid32_t gid_t; 30typedef __kernel_uid16_t uid16_t; 31typedef __kernel_gid16_t gid16_t; 32 33#ifdef CONFIG_UID16 34/* This is defined by include/asm-{arch}/posix_types.h */ 35typedef __kernel_old_uid_t old_uid_t; 36typedef __kernel_old_gid_t old_gid_t; 37#endif /* CONFIG_UID16 */ 38 39/* libc5 includes this file to define uid_t, thus uid_t can never change 40 * when it is included by non-kernel code 41 */ 42#else 43typedef __kernel_uid_t uid_t; 44typedef __kernel_gid_t gid_t; 45#endif /* __KERNEL__ */ 46 47#if defined(__GNUC__) && !defined(__STRICT_ANSI__) 48typedef __kernel_loff_t loff_t; 49#endif 50 51/* 52 * The following typedefs are also protected by individual ifdefs for 53 * historical reasons: 54 */ 55#ifndef _SIZE_T 56#define _SIZE_T 57typedef __kernel_size_t size_t; 58#endif 59 60#ifndef _SSIZE_T 61#define _SSIZE_T 62typedef __kernel_ssize_t ssize_t; 63#endif 64 65#ifndef _PTRDIFF_T 66#define _PTRDIFF_T 67typedef __kernel_ptrdiff_t ptrdiff_t; 68#endif 69 70#ifndef _TIME_T 71#define _TIME_T 72typedef __kernel_time_t time_t; 73#endif 74 75#ifndef _CLOCK_T 76#define _CLOCK_T 77typedef __kernel_clock_t clock_t; 78#endif 79 80#ifndef _CADDR_T 81#define _CADDR_T 82typedef __kernel_caddr_t caddr_t; 83#endif 84 85/* bsd */ 86typedef unsigned char u_char; 87typedef unsigned short u_short; 88typedef unsigned int u_int; 89typedef unsigned long u_long; 90 91/* sysv */ 92typedef unsigned char unchar; 93typedef unsigned short ushort; 94typedef unsigned int uint; 95typedef unsigned long ulong; 96 97#ifndef __BIT_TYPES_DEFINED__ 98#define __BIT_TYPES_DEFINED__ 99 100typedef __u8 u_int8_t; 101typedef __s8 int8_t; 102typedef __u16 u_int16_t; 103typedef __s16 int16_t; 104typedef __u32 u_int32_t; 105typedef __s32 int32_t; 106 107#endif /* !(__BIT_TYPES_DEFINED__) */ 108 109typedef __u8 uint8_t; 110typedef __u16 uint16_t; 111typedef __u32 uint32_t; 112 113#if defined(__GNUC__) && !defined(__STRICT_ANSI__) 114typedef __u64 uint64_t; 115typedef __u64 u_int64_t; 116typedef __s64 int64_t; 117#endif 118 119/* 120 * transition to 64-bit sector_t, possibly making it an option... 121 */ 122#undef BLK_64BIT_SECTOR 123 124#ifdef BLK_64BIT_SECTOR 125typedef u64 sector_t; 126#else 127typedef unsigned long sector_t; 128#endif 129 130/* 131 * The type of an index into the pagecache. Use a #define so asm/types.h 132 * can override it. 133 */ 134#ifndef pgoff_t 135#define pgoff_t unsigned long 136#endif 137 138#endif /* __KERNEL_STRICT_NAMES */ 139 140/* 141 * Below are truly Linux-specific types that should never collide with 142 * any application/library that wants linux/types.h. 143 */ 144 145struct ustat { 146 __kernel_daddr_t f_tfree; 147 __kernel_ino_t f_tinode; 148 char f_fname[6]; 149 char f_fpack[6]; 150}; 151 152#endif /* _LINUX_TYPES_H */ 153

