Subversion Repositories Kolibri OS

Rev

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