Home | History | Annotate | Download | only in linux
      1 #ifndef _LINUX_TYPES_H
      2 #define _LINUX_TYPES_H
      3 
      4 #ifdef	__KERNEL__
      5 
      6 #define BITS_TO_LONGS(bits) \
      7 	(((bits)+BITS_PER_LONG-1)/BITS_PER_LONG)
      8 #define DECLARE_BITMAP(name,bits) \
      9 	unsigned long name[BITS_TO_LONGS(bits)]
     10 
     11 #define BITS_PER_BYTE 8
     12 #endif
     13 
     14 #include <linux/posix_types.h>
     15 #include <asm/types.h>
     16 
     17 #ifndef __KERNEL_STRICT_NAMES
     18 
     19 typedef __u32 __kernel_dev_t;
     20 
     21 typedef __kernel_fd_set		fd_set;
     22 typedef __kernel_dev_t		dev_t;
     23 typedef __kernel_ino_t		ino_t;
     24 typedef __kernel_mode_t		mode_t;
     25 typedef __kernel_nlink_t	nlink_t;
     26 typedef __kernel_off_t		off_t;
     27 typedef __kernel_pid_t		pid_t;
     28 typedef __kernel_daddr_t	daddr_t;
     29 typedef __kernel_key_t		key_t;
     30 typedef __kernel_suseconds_t	suseconds_t;
     31 typedef __kernel_timer_t	timer_t;
     32 typedef __kernel_clockid_t	clockid_t;
     33 typedef __kernel_mqd_t		mqd_t;
     34 
     35 #ifdef __KERNEL__
     36 typedef _Bool			bool;
     37 
     38 typedef __kernel_uid32_t	uid_t;
     39 typedef __kernel_gid32_t	gid_t;
     40 typedef __kernel_uid16_t        uid16_t;
     41 typedef __kernel_gid16_t        gid16_t;
     42 
     43 #ifdef CONFIG_UID16
     44 /* This is defined by include/asm-{arch}/posix_types.h */
     45 typedef __kernel_old_uid_t	old_uid_t;
     46 typedef __kernel_old_gid_t	old_gid_t;
     47 #endif /* CONFIG_UID16 */
     48 
     49 /* libc5 includes this file to define uid_t, thus uid_t can never change
     50  * when it is included by non-kernel code
     51  */
     52 #else
     53 typedef __kernel_uid_t		uid_t;
     54 typedef __kernel_gid_t		gid_t;
     55 #endif /* __KERNEL__ */
     56 
     57 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
     58 typedef __kernel_loff_t		loff_t;
     59 #endif
     60 
     61 /*
     62  * The following typedefs are also protected by individual ifdefs for
     63  * historical reasons:
     64  */
     65 #ifndef _SIZE_T
     66 #define _SIZE_T
     67 typedef __kernel_size_t		size_t;
     68 #endif
     69 
     70 #ifndef _SSIZE_T
     71 #define _SSIZE_T
     72 typedef __kernel_ssize_t	ssize_t;
     73 #endif
     74 
     75 #ifndef _PTRDIFF_T
     76 #define _PTRDIFF_T
     77 typedef __kernel_ptrdiff_t	ptrdiff_t;
     78 #endif
     79 
     80 #ifndef _TIME_T
     81 #define _TIME_T
     82 typedef __kernel_time_t		time_t;
     83 #endif
     84 
     85 #ifndef _CLOCK_T
     86 #define _CLOCK_T
     87 typedef __kernel_clock_t	clock_t;
     88 #endif
     89 
     90 #ifndef _CADDR_T
     91 #define _CADDR_T
     92 typedef __kernel_caddr_t	caddr_t;
     93 #endif
     94 
     95 /* bsd */
     96 typedef unsigned char		u_char;
     97 typedef unsigned short		u_short;
     98 typedef unsigned int		u_int;
     99 typedef unsigned long		u_long;
    100 
    101 /* sysv */
    102 typedef unsigned char		unchar;
    103 typedef unsigned short		ushort;
    104 typedef unsigned int		uint;
    105 typedef unsigned long		ulong;
    106 
    107 #ifndef __BIT_TYPES_DEFINED__
    108 #define __BIT_TYPES_DEFINED__
    109 
    110 typedef		__u8		u_int8_t;
    111 typedef		__s8		int8_t;
    112 typedef		__u16		u_int16_t;
    113 typedef		__s16		int16_t;
    114 typedef		__u32		u_int32_t;
    115 typedef		__s32		int32_t;
    116 
    117 #endif /* !(__BIT_TYPES_DEFINED__) */
    118 
    119 typedef		__u8		uint8_t;
    120 typedef		__u16		uint16_t;
    121 typedef		__u32		uint32_t;
    122 
    123 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    124 typedef		__u64		uint64_t;
    125 typedef		__u64		u_int64_t;
    126 typedef		__s64		int64_t;
    127 #endif
    128 
    129 /* this is a special 64bit data type that is 8-byte aligned */
    130 #define aligned_u64 unsigned long long __attribute__((aligned(8)))
    131 #define aligned_be64 __be64 __attribute__((aligned(8)))
    132 #define aligned_le64 __le64 __attribute__((aligned(8)))
    133 
    134 /**
    135  * The type used for indexing onto a disc or disc partition.
    136  *
    137  * Linux always considers sectors to be 512 bytes long independently
    138  * of the devices real block size.
    139  */
    140 #ifdef CONFIG_LBD
    141 typedef u64 sector_t;
    142 #else
    143 typedef unsigned long sector_t;
    144 #endif
    145 
    146 /*
    147  * The type of the inode's block count.
    148  */
    149 #ifdef CONFIG_LSF
    150 typedef u64 blkcnt_t;
    151 #else
    152 typedef unsigned long blkcnt_t;
    153 #endif
    154 
    155 /*
    156  * The type of an index into the pagecache.  Use a #define so asm/types.h
    157  * can override it.
    158  */
    159 #ifndef pgoff_t
    160 #define pgoff_t unsigned long
    161 #endif
    162 
    163 #endif /* __KERNEL_STRICT_NAMES */
    164 
    165 /*
    166  * Below are truly Linux-specific types that should never collide with
    167  * any application/library that wants linux/types.h.
    168  */
    169 
    170 #ifdef __CHECKER__
    171 #define __bitwise__ __attribute__((bitwise))
    172 #else
    173 #define __bitwise__
    174 #endif
    175 #ifdef __CHECK_ENDIAN__
    176 #define __bitwise __bitwise__
    177 #else
    178 #define __bitwise
    179 #endif
    180 
    181 typedef __u16 __bitwise __le16;
    182 typedef __u16 __bitwise __be16;
    183 typedef __u32 __bitwise __le32;
    184 typedef __u32 __bitwise __be32;
    185 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    186 typedef __u64 __bitwise __le64;
    187 typedef __u64 __bitwise __be64;
    188 #endif
    189 typedef __u16 __bitwise __sum16;
    190 typedef __u32 __bitwise __wsum;
    191 
    192 #ifdef __KERNEL__
    193 typedef unsigned __bitwise__ gfp_t;
    194 
    195 #ifdef CONFIG_RESOURCES_64BIT
    196 typedef u64 resource_size_t;
    197 #else
    198 typedef u32 resource_size_t;
    199 #endif
    200 
    201 #endif	/* __KERNEL__ */
    202 
    203 struct ustat {
    204 	__kernel_daddr_t	f_tfree;
    205 	__kernel_ino_t		f_tinode;
    206 	char			f_fname[6];
    207 	char			f_fpack[6];
    208 };
    209 
    210 #endif /* _LINUX_TYPES_H */
    211