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