Add FIO_PREFERRED_CLOCK_SOURCE to allow selection of clock source on a per-platform...
[fio.git] / os / os-aix.h
CommitLineData
bf2e821a
CC
1#ifndef FIO_OS_AIX_H
2#define FIO_OS_AIX_H
3
cca84643
JA
4#define FIO_OS os_aix
5
bf2e821a
CC
6#include <errno.h>
7#include <unistd.h>
8#include <sys/devinfo.h>
9#include <sys/ioctl.h>
10
e2e58886
JA
11#include "../file.h"
12
bf2e821a 13#define FIO_HAVE_POSIXAIO
bf2e821a
CC
14#define FIO_HAVE_ODIRECT
15#define FIO_USE_GENERIC_RAND
ecc314ba 16#define FIO_HAVE_CLOCK_MONOTONIC
bf2e821a 17
282cc167
JA
18/*
19 * This is broken on AIX if _LARGE_FILES is defined...
20 */
21#if 0
22#define FIO_HAVE_FALLOCATE
23#endif
24
bf2e821a
CC
25#define FIO_HAVE_PSHARED_MUTEX
26
27#define OS_MAP_ANON MAP_ANON
8e239cae 28#define OS_MSG_DONTWAIT 0
bf2e821a 29
d05c4a03 30#if BYTE_ORDER == BIG_ENDIAN
a9df7070 31#define FIO_BIG_ENDIAN
d05c4a03
JA
32#else
33#define FIO_LITTLE_ENDIAN
34#endif
35
a9df7070
JA
36#define FIO_USE_GENERIC_SWAP
37
d05c4a03
JA
38#define FIO_OS_HAVE_SOCKLEN_T
39#define fio_socklen_t socklen_t
40
9b836561 41static inline int blockdev_invalidate_cache(struct fio_file *f)
bf2e821a
CC
42{
43 return EINVAL;
44}
45
ecc314ba 46static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes)
bf2e821a
CC
47{
48 struct devinfo info;
49
ecc314ba 50 if (!ioctl(f->fd, IOCINFO, &info)) {
bf2e821a
CC
51 *bytes = (unsigned long long)info.un.scdk.numblks *
52 info.un.scdk.blksize;
53 return 0;
54 }
55
56 return errno;
57}
58
59static inline unsigned long long os_phys_mem(void)
60{
61 long mem = sysconf(_SC_AIX_REALMEM);
62
63 if (mem == -1)
64 return 0;
65
66 return (unsigned long long) mem * 1024;
67}
68
69#endif