First snapshot of FIO for Windows
[fio.git] / os / os-aix.h
1 #ifndef FIO_OS_AIX_H
2 #define FIO_OS_AIX_H
3
4 #include <errno.h>
5 #include <unistd.h>
6 #include <sys/devinfo.h>
7 #include <sys/ioctl.h>
8
9 #define FIO_HAVE_POSIXAIO
10 #define FIO_HAVE_ODIRECT
11 #define FIO_USE_GENERIC_RAND
12
13 /*
14  * This is broken on AIX if _LARGE_FILES is defined...
15  */
16 #if 0
17 #define FIO_HAVE_FALLOCATE
18 #endif
19
20 #define FIO_HAVE_PSHARED_MUTEX
21
22 #define OS_MAP_ANON             MAP_ANON
23 #define OS_MSG_DONTWAIT         0
24
25 static inline int blockdev_invalidate_cache(int fd)
26 {
27         return EINVAL;
28 }
29
30 static inline int blockdev_size(int fd, unsigned long long *bytes)
31 {
32         struct devinfo info;
33
34         if (!ioctl(fd, IOCINFO, &info)) {
35                 *bytes = (unsigned long long)info.un.scdk.numblks *
36                                 info.un.scdk.blksize;
37                 return 0;
38         }
39
40         return errno;
41 }
42
43 static inline unsigned long long os_phys_mem(void)
44 {
45         long mem = sysconf(_SC_AIX_REALMEM);
46
47         if (mem == -1)
48                 return 0;
49
50         return (unsigned long long) mem * 1024;
51 }
52
53 #endif