Support for Mac OS 10.6.2
[fio.git] / os / os-mac.h
1 #ifndef FIO_OS_APPLE_H
2 #define FIO_OS_APPLE_H
3
4 #include <errno.h>
5 #include <sys/sysctl.h>
6
7 #ifndef CLOCK_MONOTONIC
8 #define CLOCK_MONOTONIC 1
9 #endif
10
11 #ifndef CLOCK_REALTIME
12 #define CLOCK_REALTIME 1
13 #endif
14
15 #define FIO_HAVE_POSIXAIO
16 #define FIO_USE_GENERIC_BDEV_SIZE
17
18 #define OS_MAP_ANON             MAP_ANON
19
20 typedef unsigned long os_cpu_mask_t;
21 typedef unsigned int os_random_state_t;
22 typedef unsigned int clockid_t;
23
24 static inline int blockdev_invalidate_cache(int fd)
25 {
26         return EINVAL;
27 }
28
29 static inline unsigned long long os_phys_mem(void)
30 {
31         int mib[2] = { CTL_HW, HW_PHYSMEM };
32         unsigned long long mem;
33         size_t len = sizeof(mem);
34
35         sysctl(mib, 2, &mem, &len, NULL, 0);
36         return mem;
37 }
38
39 static inline void os_random_seed(unsigned long seed, os_random_state_t *rs)
40 {
41         srand(seed);
42 }
43
44 static inline long os_random_long(os_random_state_t *rs)
45 {
46         long val;
47
48         val = rand_r(rs);
49         return val;
50 }
51
52 #endif