Subversion Repositories Kolibri OS

Rev

Rev 5270 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.
  139.  */
  140. #define pgoff_t unsigned long
  141.  
  142. /*
  143.  * A dma_addr_t can hold any valid DMA address, i.e., any address returned
  144.  * by the DMA API.
  145.  *
  146.  * If the DMA API only uses 32-bit addresses, dma_addr_t need only be 32
  147.  * bits wide.  Bus addresses, e.g., PCI BARs, may be wider than 32 bits,
  148.  * but drivers do memory-mapped I/O to ioremapped kernel virtual addresses,
  149.  * so they don't care about the size of the actual bus addresses.
  150.  */
  151. #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
  152. typedef u64 dma_addr_t;
  153. #else
  154. typedef u32 dma_addr_t;
  155. #endif
  156.  
  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.  * The struct is aligned to size of pointer. On most architectures it happens
  210.  * naturally due ABI requirements, but some architectures (like CRIS) have
  211.  * weird ABI and we need to ask it explicitly.
  212.  *
  213.  * The alignment is required to guarantee that bits 0 and 1 of @next will be
  214.  * clear under normal conditions -- as long as we use call_rcu(),
  215.  * call_rcu_bh(), call_rcu_sched(), or call_srcu() to queue callback.
  216.  *
  217.  * This guarantee is important for few reasons:
  218.  *  - future call_rcu_lazy() will make use of lower bits in the pointer;
  219.  *  - the structure shares storage spacer in struct page with @compound_head,
  220.  *    which encode PageTail() in bit 0. The guarantee is needed to avoid
  221.  *    false-positive PageTail().
  222.  */
  223. struct callback_head {
  224.         struct callback_head *next;
  225.         void (*func)(struct callback_head *head);
  226. } __attribute__((aligned(sizeof(void *))));
  227. #define rcu_head callback_head
  228.  
  229. typedef void (*rcu_callback_t)(struct rcu_head *head);
  230. typedef void (*call_rcu_func_t)(struct rcu_head *head, rcu_callback_t func);
  231.  
  232. /* clocksource cycle base type */
  233. typedef u64 cycle_t;
  234.  
  235. #endif /*  __ASSEMBLY__ */
  236. #endif /* _LINUX_TYPES_H */
  237.