Subversion Repositories Kolibri OS

Rev

Rev 2967 | Rev 3391 | 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. #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
  155. typedef u64 dma_addr_t;
  156. #else
  157. typedef u32 dma_addr_t;
  158. #endif /* dma_addr_t */
  159.  
  160. #endif /* __KERNEL__ */
  161.  
  162. /*
  163.  * Below are truly Linux-specific types that should never collide with
  164.  * any application/library that wants linux/types.h.
  165.  */
  166.  
  167. #ifdef __CHECKER__
  168. #define __bitwise__ __attribute__((bitwise))
  169. #else
  170. #define __bitwise__
  171. #endif
  172. #ifdef __CHECK_ENDIAN__
  173. #define __bitwise __bitwise__
  174. #else
  175. #define __bitwise
  176. #endif
  177.  
  178. typedef __u16 __bitwise __le16;
  179. typedef __u16 __bitwise __be16;
  180. typedef __u32 __bitwise __le32;
  181. typedef __u32 __bitwise __be32;
  182. typedef __u64 __bitwise __le64;
  183. typedef __u64 __bitwise __be64;
  184.  
  185. typedef __u16 __bitwise __sum16;
  186. typedef __u32 __bitwise __wsum;
  187.  
  188. /*
  189.  * aligned_u64 should be used in defining kernel<->userspace ABIs to avoid
  190.  * common 32/64-bit compat problems.
  191.  * 64-bit values align to 4-byte boundaries on x86_32 (and possibly other
  192.  * architectures) and to 8-byte boundaries on 64-bit architetures.  The new
  193.  * aligned_64 type enforces 8-byte alignment so that structs containing
  194.  * aligned_64 values have the same alignment on 32-bit and 64-bit architectures.
  195.  * No conversions are necessary between 32-bit user-space and a 64-bit kernel.
  196.  */
  197. #define __aligned_u64 __u64 __attribute__((aligned(8)))
  198. #define __aligned_be64 __be64 __attribute__((aligned(8)))
  199. #define __aligned_le64 __le64 __attribute__((aligned(8)))
  200.  
  201. #ifdef __KERNEL__
  202. typedef unsigned __bitwise__ gfp_t;
  203. typedef unsigned __bitwise__ fmode_t;
  204.  
  205. #ifdef CONFIG_PHYS_ADDR_T_64BIT
  206. typedef u64 phys_addr_t;
  207. #else
  208. typedef u32 phys_addr_t;
  209. #endif
  210.  
  211. typedef phys_addr_t resource_size_t;
  212.  
  213. typedef struct {
  214.         int counter;
  215. } atomic_t;
  216.  
  217. #ifdef CONFIG_64BIT
  218. typedef struct {
  219.         long counter;
  220. } atomic64_t;
  221. #endif
  222.  
  223. struct list_head {
  224.         struct list_head *next, *prev;
  225. };
  226.  
  227. struct hlist_head {
  228.         struct hlist_node *first;
  229. };
  230.  
  231. struct hlist_node {
  232.         struct hlist_node *next, **pprev;
  233. };
  234.  
  235. struct ustat {
  236.         __kernel_daddr_t        f_tfree;
  237.         __kernel_ino_t          f_tinode;
  238.         char                    f_fname[6];
  239.         char                    f_fpack[6];
  240. };
  241.  
  242. #endif  /* __KERNEL__ */
  243. #endif /*  __ASSEMBLY__ */
  244.  
  245.  
  246.  
  247.  
  248. typedef unsigned char        u8_t;
  249. typedef unsigned short       u16_t;
  250. typedef unsigned long        u32_t;
  251. typedef unsigned long long   u64_t;
  252.  
  253. typedef unsigned int         addr_t;
  254. typedef unsigned int         count_t;
  255.  
  256.  
  257. #define false                0
  258. #define true                 1
  259.  
  260.  
  261. #define likely(x)       __builtin_expect(!!(x), 1)
  262. #define unlikely(x)     __builtin_expect(!!(x), 0)
  263.  
  264. #define BITS_PER_LONG 32
  265.  
  266. #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
  267.  
  268.  
  269. #define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)
  270.  
  271.  
  272. #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
  273.  
  274.  
  275.  
  276.  
  277. #ifndef HAVE_ARCH_BUG
  278. #define BUG() do { \
  279.          printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \
  280.        /*  panic("BUG!"); */ \
  281.  } while (0)
  282. #endif
  283.  
  284. #ifndef HAVE_ARCH_BUG_ON
  285. #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
  286. #endif
  287.  
  288.  
  289.  
  290. #define MTRR_TYPE_UNCACHABLE 0
  291. #define MTRR_TYPE_WRCOMB     1
  292. #define MTRR_TYPE_WRTHROUGH  4
  293. #define MTRR_TYPE_WRPROT     5
  294. #define MTRR_TYPE_WRBACK     6
  295. #define MTRR_NUM_TYPES       7
  296.  
  297. int dbgprintf(const char* format, ...);
  298.  
  299. #define GFP_KERNEL           0
  300. #define GFP_ATOMIC           0
  301.  
  302. //#include <stdio.h>
  303.  
  304. int snprintf(char *str, size_t size, const char *format, ...);
  305.  
  306.  
  307. //#include <string.h>
  308.  
  309. void*   memcpy(void *s1, const void *s2, size_t n);
  310. void*   memset(void *s, int c, size_t n);
  311. size_t  strlen(const char *s);
  312. char *strcpy(char *s1, const char *s2);
  313. char *strncpy (char *dst, const char *src, size_t len);
  314.  
  315. void *malloc(size_t size);
  316. #define kfree free
  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. struct drm_file;
  328.  
  329.  
  330. #define DRM_MEMORYBARRIER() __asm__ __volatile__("lock; addl $0,0(%esp)")
  331. #define mb() __asm__ __volatile__("lock; addl $0,0(%esp)")
  332.  
  333.  
  334. #define PAGE_SHIFT      12
  335. #define PAGE_SIZE       (1UL << PAGE_SHIFT)
  336. #define PAGE_MASK       (~(PAGE_SIZE-1))
  337.  
  338.  
  339.  
  340. #define ENTER()   dbgprintf("enter %s\n",__FUNCTION__)
  341. #define LEAVE()   dbgprintf("leave %s\n",__FUNCTION__)
  342.  
  343. struct timeval
  344. {
  345.   __kernel_time_t         tv_sec;         /* seconds */
  346.   __kernel_suseconds_t    tv_usec;        /* microseconds */
  347. };
  348.  
  349.  
  350. #define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159
  351.  
  352. #ifndef __read_mostly
  353. #define __read_mostly
  354. #endif
  355.  
  356.  
  357. #endif /* _LINUX_TYPES_H */
  358.