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