Subversion Repositories Kolibri OS

Rev

Rev 4292 | 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. #include <asm/types.h>
  5.  
  6. #ifndef __ASSEMBLY__
  7. #ifdef  __KERNEL__
  8.  
  9. #define DECLARE_BITMAP(name,bits) \
  10.         unsigned long name[BITS_TO_LONGS(bits)]
  11. #else
  12. #ifndef __EXPORTED_HEADERS__
  13. #warning "Attempt to use kernel headers from user space, see http://kernelnewbies.org/KernelHeaders"
  14. #endif /* __EXPORTED_HEADERS__ */
  15. #endif
  16.  
  17. #include <linux/posix_types.h>
  18.  
  19. #ifdef __KERNEL__
  20.  
  21. typedef __u32 __kernel_dev_t;
  22.  
  23. typedef __kernel_fd_set         fd_set;
  24. typedef __kernel_dev_t          dev_t;
  25. typedef __kernel_ino_t          ino_t;
  26. typedef __kernel_mode_t         mode_t;
  27. typedef unsigned short          umode_t;
  28. typedef __u32                   nlink_t;
  29. typedef __kernel_off_t          off_t;
  30. typedef __kernel_pid_t          pid_t;
  31. typedef __kernel_daddr_t        daddr_t;
  32. typedef __kernel_key_t          key_t;
  33. typedef __kernel_suseconds_t    suseconds_t;
  34. typedef __kernel_timer_t        timer_t;
  35. typedef __kernel_clockid_t      clockid_t;
  36. typedef __kernel_mqd_t          mqd_t;
  37.  
  38. typedef _Bool                   bool;
  39.  
  40. typedef __kernel_uid32_t        uid_t;
  41. typedef __kernel_gid32_t        gid_t;
  42. typedef __kernel_uid16_t        uid16_t;
  43. typedef __kernel_gid16_t        gid16_t;
  44.  
  45. typedef unsigned long           uintptr_t;
  46.  
  47. #ifdef CONFIG_UID16
  48. /* This is defined by include/asm-{arch}/posix_types.h */
  49. typedef __kernel_old_uid_t      old_uid_t;
  50. typedef __kernel_old_gid_t      old_gid_t;
  51. #endif /* CONFIG_UID16 */
  52.  
  53. #if defined(__GNUC__)
  54. typedef __kernel_loff_t         loff_t;
  55. #endif
  56.  
  57. /*
  58.  * The following typedefs are also protected by individual ifdefs for
  59.  * historical reasons:
  60.  */
  61. #ifndef _SIZE_T
  62. #define _SIZE_T
  63. typedef __kernel_size_t         size_t;
  64. #endif
  65.  
  66. #ifndef _SSIZE_T
  67. #define _SSIZE_T
  68. typedef __kernel_ssize_t        ssize_t;
  69. #endif
  70.  
  71. #ifndef _PTRDIFF_T
  72. #define _PTRDIFF_T
  73. typedef __kernel_ptrdiff_t      ptrdiff_t;
  74. #endif
  75.  
  76. #ifndef _TIME_T
  77. #define _TIME_T
  78. typedef __kernel_time_t         time_t;
  79. #endif
  80.  
  81. #ifndef _CLOCK_T
  82. #define _CLOCK_T
  83. typedef __kernel_clock_t        clock_t;
  84. #endif
  85.  
  86. #ifndef _CADDR_T
  87. #define _CADDR_T
  88. typedef __kernel_caddr_t        caddr_t;
  89. #endif
  90.  
  91. /* bsd */
  92. typedef unsigned char           u_char;
  93. typedef unsigned short          u_short;
  94. typedef unsigned int            u_int;
  95. typedef unsigned long           u_long;
  96.  
  97. /* sysv */
  98. typedef unsigned char           unchar;
  99. typedef unsigned short          ushort;
  100. typedef unsigned int            uint;
  101. typedef unsigned long           ulong;
  102.  
  103. #ifndef __BIT_TYPES_DEFINED__
  104. #define __BIT_TYPES_DEFINED__
  105.  
  106. typedef         __u8            u_int8_t;
  107. typedef         __s8            int8_t;
  108. typedef         __u16           u_int16_t;
  109. typedef         __s16           int16_t;
  110. typedef         __u32           u_int32_t;
  111. typedef         __s32           int32_t;
  112.  
  113. #endif /* !(__BIT_TYPES_DEFINED__) */
  114.  
  115. typedef         __u8            uint8_t;
  116. typedef         __u16           uint16_t;
  117. typedef         __u32           uint32_t;
  118.  
  119. #if defined(__GNUC__)
  120. typedef         __u64           uint64_t;
  121. typedef         __u64           u_int64_t;
  122. typedef         __s64           int64_t;
  123. #endif
  124.  
  125. /* this is a special 64bit data type that is 8-byte aligned */
  126. #define aligned_u64 __u64 __attribute__((aligned(8)))
  127. #define aligned_be64 __be64 __attribute__((aligned(8)))
  128. #define aligned_le64 __le64 __attribute__((aligned(8)))
  129.  
  130. /**
  131.  * The type used for indexing onto a disc or disc partition.
  132.  *
  133.  * Linux always considers sectors to be 512 bytes long independently
  134.  * of the devices real block size.
  135.  *
  136.  * blkcnt_t is the type of the inode's block count.
  137.  */
  138. #ifdef CONFIG_LBDAF
  139. typedef u64 sector_t;
  140. typedef u64 blkcnt_t;
  141. #else
  142. typedef unsigned long sector_t;
  143. typedef unsigned long blkcnt_t;
  144. #endif
  145.  
  146. /*
  147.  * The type of an index into the pagecache.  Use a #define so asm/types.h
  148.  * can override it.
  149.  */
  150. #ifndef pgoff_t
  151. #define pgoff_t unsigned long
  152. #endif
  153.  
  154. /* A dma_addr_t can hold any valid DMA or bus address for the platform */
  155. #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
  156. typedef u64 dma_addr_t;
  157. #else
  158. typedef u32 dma_addr_t;
  159. #endif /* dma_addr_t */
  160.  
  161. #endif /* __KERNEL__ */
  162.  
  163. /*
  164.  * Below are truly Linux-specific types that should never collide with
  165.  * any application/library that wants linux/types.h.
  166.  */
  167.  
  168. #ifdef __CHECKER__
  169. #define __bitwise__ __attribute__((bitwise))
  170. #else
  171. #define __bitwise__
  172. #endif
  173. #ifdef __CHECK_ENDIAN__
  174. #define __bitwise __bitwise__
  175. #else
  176. #define __bitwise
  177. #endif
  178.  
  179. typedef __u16 __bitwise __le16;
  180. typedef __u16 __bitwise __be16;
  181. typedef __u32 __bitwise __le32;
  182. typedef __u32 __bitwise __be32;
  183. typedef __u64 __bitwise __le64;
  184. typedef __u64 __bitwise __be64;
  185.  
  186. typedef __u16 __bitwise __sum16;
  187. typedef __u32 __bitwise __wsum;
  188.  
  189. /*
  190.  * aligned_u64 should be used in defining kernel<->userspace ABIs to avoid
  191.  * common 32/64-bit compat problems.
  192.  * 64-bit values align to 4-byte boundaries on x86_32 (and possibly other
  193.  * architectures) and to 8-byte boundaries on 64-bit architetures.  The new
  194.  * aligned_64 type enforces 8-byte alignment so that structs containing
  195.  * aligned_64 values have the same alignment on 32-bit and 64-bit architectures.
  196.  * No conversions are necessary between 32-bit user-space and a 64-bit kernel.
  197.  */
  198. #define __aligned_u64 __u64 __attribute__((aligned(8)))
  199. #define __aligned_be64 __be64 __attribute__((aligned(8)))
  200. #define __aligned_le64 __le64 __attribute__((aligned(8)))
  201.  
  202. #ifdef __KERNEL__
  203. typedef unsigned __bitwise__ gfp_t;
  204. typedef unsigned __bitwise__ fmode_t;
  205. typedef unsigned __bitwise__ oom_flags_t;
  206.  
  207. #ifdef CONFIG_PHYS_ADDR_T_64BIT
  208. typedef u64 phys_addr_t;
  209. #else
  210. typedef u32 phys_addr_t;
  211. #endif
  212.  
  213. typedef phys_addr_t resource_size_t;
  214.  
  215. /*
  216.  * This type is the placeholder for a hardware interrupt number. It has to be
  217.  * big enough to enclose whatever representation is used by a given platform.
  218.  */
  219. typedef unsigned long irq_hw_number_t;
  220.  
  221. typedef struct {
  222.         int counter;
  223. } atomic_t;
  224.  
  225. #ifdef CONFIG_64BIT
  226. typedef struct {
  227.         long counter;
  228. } atomic64_t;
  229. #endif
  230.  
  231. struct list_head {
  232.         struct list_head *next, *prev;
  233. };
  234.  
  235. struct hlist_head {
  236.         struct hlist_node *first;
  237. };
  238.  
  239. struct hlist_node {
  240.         struct hlist_node *next, **pprev;
  241. };
  242.  
  243. struct ustat {
  244.         __kernel_daddr_t        f_tfree;
  245.         __kernel_ino_t          f_tinode;
  246.         char                    f_fname[6];
  247.         char                    f_fpack[6];
  248. };
  249.  
  250. #endif  /* __KERNEL__ */
  251. #endif /*  __ASSEMBLY__ */
  252.  
  253.  
  254.  
  255.  
  256. typedef unsigned char        u8_t;
  257. typedef unsigned short       u16_t;
  258. typedef unsigned long        u32_t;
  259. typedef unsigned long long   u64_t;
  260.  
  261. typedef unsigned int         addr_t;
  262. typedef unsigned int         count_t;
  263.  
  264.  
  265. #define false                0
  266. #define true                 1
  267.  
  268.  
  269. #define likely(x)       __builtin_expect(!!(x), 1)
  270. #define unlikely(x)     __builtin_expect(!!(x), 0)
  271.  
  272. #define BITS_PER_LONG 32
  273.  
  274. #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
  275.  
  276.  
  277. #define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)
  278.  
  279.  
  280. #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
  281.  
  282.  
  283. #define MTRR_TYPE_UNCACHABLE 0
  284. #define MTRR_TYPE_WRCOMB     1
  285. #define MTRR_TYPE_WRTHROUGH  4
  286. #define MTRR_TYPE_WRPROT     5
  287. #define MTRR_TYPE_WRBACK     6
  288. #define MTRR_NUM_TYPES       7
  289.  
  290. int dbgprintf(const char* format, ...);
  291.  
  292. #define GFP_KERNEL           0
  293. #define GFP_ATOMIC           0
  294.  
  295. //#include <stdio.h>
  296.  
  297. int snprintf(char *str, size_t size, const char *format, ...);
  298.  
  299.  
  300. //#include <string.h>
  301.  
  302. void*   memcpy(void *s1, const void *s2, size_t n);
  303. void*   memset(void *s, int c, size_t n);
  304. size_t  strlen(const char *s);
  305. char *strcpy(char *s1, const char *s2);
  306. char *strncpy (char *dst, const char *src, size_t len);
  307.  
  308. void *malloc(size_t size);
  309. void* realloc(void* oldmem, size_t bytes);
  310.  
  311. #define kfree free
  312.  
  313. static inline void *krealloc(void *p, size_t new_size, gfp_t flags)
  314. {
  315.     return realloc(p, new_size);
  316. }
  317.  
  318. static inline void *kzalloc(size_t size, uint32_t flags)
  319. {
  320.     void *ret = malloc(size);
  321.     memset(ret, 0, size);
  322.     return ret;
  323. }
  324.  
  325. #define kmalloc(s,f) kzalloc((s), (f))
  326.  
  327.  
  328.  
  329.  
  330. struct drm_file;
  331.  
  332.  
  333. #define PAGE_SHIFT      12
  334. #define PAGE_SIZE       (1UL << PAGE_SHIFT)
  335. #define PAGE_MASK       (~(PAGE_SIZE-1))
  336.  
  337.  
  338.  
  339. #define ENTER()   dbgprintf("enter %s\n",__FUNCTION__)
  340. #define LEAVE()   dbgprintf("leave %s\n",__FUNCTION__)
  341.  
  342. struct timeval
  343. {
  344.   __kernel_time_t         tv_sec;         /* seconds */
  345.   __kernel_suseconds_t    tv_usec;        /* microseconds */
  346. };
  347.  
  348.  
  349. #define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159
  350.  
  351. #ifndef __read_mostly
  352. #define __read_mostly
  353. #endif
  354.  
  355. /**
  356.  * struct callback_head - callback structure for use with RCU and task_work
  357.  * @next: next update requests in a list
  358.  * @func: actual update function to call after the grace period.
  359.  */
  360. struct callback_head {
  361.         struct callback_head *next;
  362.         void (*func)(struct callback_head *head);
  363. };
  364. #define rcu_head callback_head
  365.  
  366. #endif /* _LINUX_TYPES_H */
  367.