File: /Users/paulross/dev/linux/linux-3.13/include/linux/types.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

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