Subversion Repositories Kolibri OS

Rev

Rev 3391 | Rev 4292 | 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. typedef         __u64           uint64_t;
  120. typedef         __u64           u_int64_t;
  121.  
  122. typedef __signed__ long long int64_t;
  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.  
  256. #define false                0
  257. #define true                 1
  258.  
  259.  
  260. #define likely(x)       __builtin_expect(!!(x), 1)
  261. #define unlikely(x)     __builtin_expect(!!(x), 0)
  262.  
  263. #define BITS_PER_LONG 32
  264.  
  265. #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
  266.  
  267.  
  268. #define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)
  269.  
  270.  
  271. #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
  272.  
  273.  
  274. #define MTRR_TYPE_UNCACHABLE 0
  275. #define MTRR_TYPE_WRCOMB     1
  276. #define MTRR_TYPE_WRTHROUGH  4
  277. #define MTRR_TYPE_WRPROT     5
  278. #define MTRR_TYPE_WRBACK     6
  279. #define MTRR_NUM_TYPES       7
  280.  
  281. int dbgprintf(const char* format, ...);
  282.  
  283. #define GFP_KERNEL           0
  284. #define GFP_ATOMIC           0
  285.  
  286. //#include <stdio.h>
  287.  
  288. int snprintf(char *str, size_t size, const char *format, ...);
  289.  
  290.  
  291. //#include <string.h>
  292.  
  293. void*   memcpy(void *s1, const void *s2, size_t n);
  294. void*   memset(void *s, int c, size_t n);
  295. size_t  strlen(const char *s);
  296. char *strcpy(char *s1, const char *s2);
  297. char *strncpy (char *dst, const char *src, size_t len);
  298.  
  299. void *malloc(size_t size);
  300. void* realloc(void* oldmem, size_t bytes);
  301.  
  302. #define kfree free
  303.  
  304. static inline void *krealloc(void *p, size_t new_size, gfp_t flags)
  305. {
  306.     return realloc(p, new_size);
  307. }
  308.  
  309. static inline void *kzalloc(size_t size, uint32_t flags)
  310. {
  311.     void *ret = malloc(size);
  312.     memset(ret, 0, size);
  313.     return ret;
  314. }
  315.  
  316. #define kmalloc(s,f) kzalloc((s), (f))
  317.  
  318.  
  319.  
  320.  
  321. struct drm_file;
  322.  
  323.  
  324. #define DRM_MEMORYBARRIER() __asm__ __volatile__("lock; addl $0,0(%esp)")
  325. #define mb() __asm__ __volatile__("lock; addl $0,0(%esp)")
  326.  
  327.  
  328. #define PAGE_SHIFT      12
  329. #define PAGE_SIZE       (1UL << PAGE_SHIFT)
  330. #define PAGE_MASK       (~(PAGE_SIZE-1))
  331.  
  332.  
  333.  
  334. #define ENTER()   dbgprintf("enter %s\n",__FUNCTION__)
  335. #define LEAVE()   dbgprintf("leave %s\n",__FUNCTION__)
  336.  
  337. struct timeval
  338. {
  339.   __kernel_time_t         tv_sec;         /* seconds */
  340.   __kernel_suseconds_t    tv_usec;        /* microseconds */
  341. };
  342.  
  343.  
  344. #define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159
  345.  
  346. #ifndef __read_mostly
  347. #define __read_mostly
  348. #endif
  349.  
  350. /**
  351.  * struct callback_head - callback structure for use with RCU and task_work
  352.  * @next: next update requests in a list
  353.  * @func: actual update function to call after the grace period.
  354.  */
  355. struct callback_head {
  356.         struct callback_head *next;
  357.         void (*func)(struct callback_head *head);
  358. };
  359. #define rcu_head callback_head
  360.  
  361. #endif /* _LINUX_TYPES_H */
  362.