Subversion Repositories Kolibri OS

Rev

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