client: fix mem leak
[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 #include "../file.h"
10
11 #define FIO_HAVE_POSIXAIO
12 #define FIO_HAVE_ODIRECT
13 #define FIO_USE_GENERIC_RAND
14 #define FIO_HAVE_CLOCK_MONOTONIC
15
16 /*
17  * This is broken on AIX if _LARGE_FILES is defined...
18  */
19 #if 0
20 #define FIO_HAVE_FALLOCATE
21 #endif
22
23 #define FIO_HAVE_PSHARED_MUTEX
24
25 #define OS_MAP_ANON             MAP_ANON
26 #define OS_MSG_DONTWAIT         0
27
28 #if BYTE_ORDER == BIG_ENDIAN
29 #define FIO_BIG_ENDIAN
30 #else
31 #define FIO_LITTLE_ENDIAN
32 #endif
33
34 #define FIO_USE_GENERIC_SWAP
35
36 #define FIO_OS_HAVE_SOCKLEN_T
37 #define fio_socklen_t socklen_t
38
39 static inline int blockdev_invalidate_cache(struct fio_file *f)
40 {
41         return EINVAL;
42 }
43
44 static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes)
45 {
46         struct devinfo info;
47
48         if (!ioctl(f->fd, IOCINFO, &info)) {
49                 *bytes = (unsigned long long)info.un.scdk.numblks *
50                                 info.un.scdk.blksize;
51                 return 0;
52         }
53
54         return errno;
55 }
56
57 static inline unsigned long long os_phys_mem(void)
58 {
59         long mem = sysconf(_SC_AIX_REALMEM);
60
61         if (mem == -1)
62                 return 0;
63
64         return (unsigned long long) mem * 1024;
65 }
66
67 #endif