| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 1 | #ifndef FIO_OS_H | 
 | 2 | #define FIO_OS_H | 
 | 3 |  | 
| Jens Axboe | a14ca44 | 2009-12-20 22:24:10 +0100 | [diff] [blame] | 4 | #include <sys/types.h> | 
| Bruce Cran | 203913e | 2011-10-18 12:20:56 +0200 | [diff] [blame] | 5 | #include <sys/socket.h> | 
| Bruce Cran | 93bcfd2 | 2012-02-20 20:18:19 +0100 | [diff] [blame] | 6 | #include <fcntl.h> | 
| Bruce Cran | 03e20d6 | 2011-01-02 20:14:54 +0100 | [diff] [blame] | 7 | #include <pthread.h> | 
| Jens Axboe | a14ca44 | 2009-12-20 22:24:10 +0100 | [diff] [blame] | 8 | #include <unistd.h> | 
| Bruce Cran | ecc314b | 2011-01-04 10:59:30 +0100 | [diff] [blame] | 9 | #include <stdlib.h> | 
| Jens Axboe | a14ca44 | 2009-12-20 22:24:10 +0100 | [diff] [blame] | 10 |  | 
| Jens Axboe | cca8464 | 2011-10-07 12:47:57 +0200 | [diff] [blame] | 11 | enum { | 
 | 12 | 	os_linux = 1, | 
 | 13 | 	os_aix, | 
 | 14 | 	os_freebsd, | 
 | 15 | 	os_hpux, | 
 | 16 | 	os_mac, | 
 | 17 | 	os_netbsd, | 
 | 18 | 	os_solaris, | 
 | 19 | 	os_windows, | 
| Aaron Carroll | ec5c6b1 | 2012-11-21 10:39:00 +0100 | [diff] [blame] | 20 | 	os_android, | 
| Jens Axboe | cca8464 | 2011-10-07 12:47:57 +0200 | [diff] [blame] | 21 |  | 
 | 22 | 	os_nr, | 
 | 23 | }; | 
 | 24 |  | 
| Aaron Carroll | ec5c6b1 | 2012-11-21 10:39:00 +0100 | [diff] [blame] | 25 | #if defined(__ANDROID__) | 
 | 26 | #include "os-android.h" | 
 | 27 | #elif defined(__linux__) | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 28 | #include "os-linux.h" | 
 | 29 | #elif defined(__FreeBSD__) | 
 | 30 | #include "os-freebsd.h" | 
| YAMAMOTO Takashi | 7452440 | 2010-05-12 15:06:46 +0200 | [diff] [blame] | 31 | #elif defined(__NetBSD__) | 
 | 32 | #include "os-netbsd.h" | 
| Jens Axboe | 2c0ecd2 | 2006-06-08 13:25:41 +0200 | [diff] [blame] | 33 | #elif defined(__sun__) | 
 | 34 | #include "os-solaris.h" | 
| Jens Axboe | 2afd826 | 2009-12-14 23:08:42 +0100 | [diff] [blame] | 35 | #elif defined(__APPLE__) | 
 | 36 | #include "os-mac.h" | 
| Cigy Cyriac | bf2e821 | 2010-08-10 19:51:11 -0400 | [diff] [blame] | 37 | #elif defined(_AIX) | 
 | 38 | #include "os-aix.h" | 
| Jens Axboe | c00a228 | 2011-07-08 20:56:06 +0200 | [diff] [blame] | 39 | #elif defined(__hpux) | 
 | 40 | #include "os-hpux.h" | 
| Bruce Cran | 93bcfd2 | 2012-02-20 20:18:19 +0100 | [diff] [blame] | 41 | #elif defined(WIN32) | 
| Bruce Cran | 03e20d6 | 2011-01-02 20:14:54 +0100 | [diff] [blame] | 42 | #include "os-windows.h" | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 43 | #else | 
 | 44 | #error "unsupported os" | 
 | 45 | #endif | 
 | 46 |  | 
 | 47 | #ifdef FIO_HAVE_LIBAIO | 
 | 48 | #include <libaio.h> | 
 | 49 | #endif | 
 | 50 |  | 
 | 51 | #ifdef FIO_HAVE_POSIXAIO | 
 | 52 | #include <aio.h> | 
| Jens Axboe | e97c144 | 2011-09-21 09:38:01 +0200 | [diff] [blame] | 53 | #ifndef FIO_OS_HAVE_AIOCB_TYPEDEF | 
 | 54 | typedef struct aiocb os_aiocb_t; | 
 | 55 | #endif | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 56 | #endif | 
 | 57 |  | 
 | 58 | #ifdef FIO_HAVE_SGIO | 
 | 59 | #include <linux/fs.h> | 
 | 60 | #include <scsi/sg.h> | 
 | 61 | #endif | 
 | 62 |  | 
| Jens Axboe | 5921e80 | 2008-05-30 15:02:38 +0200 | [diff] [blame] | 63 | #ifndef FIO_HAVE_STRSEP | 
| Jens Axboe | 00fb3c8 | 2008-05-30 22:17:45 +0200 | [diff] [blame] | 64 | #include "../lib/strsep.h" | 
| Jens Axboe | 5921e80 | 2008-05-30 15:02:38 +0200 | [diff] [blame] | 65 | #endif | 
 | 66 |  | 
| Jens Axboe | 8e239ca | 2010-08-11 10:29:12 -0400 | [diff] [blame] | 67 | #ifdef MSG_DONTWAIT | 
 | 68 | #define OS_MSG_DONTWAIT	MSG_DONTWAIT | 
 | 69 | #endif | 
 | 70 |  | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 71 | #ifndef FIO_HAVE_FADVISE | 
| Aaron Carroll | ec5c6b1 | 2012-11-21 10:39:00 +0100 | [diff] [blame] | 72 | static inline int posix_fadvise(int fd, int off, int len, int advice) | 
 | 73 | { | 
 | 74 | 	(void)fd; | 
 | 75 | 	(void)off; | 
 | 76 | 	(void)len; | 
 | 77 | 	(void)advice; | 
 | 78 | 	return 0; | 
 | 79 | } | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 80 |  | 
| Shawn Lewis | 4d8947d | 2007-07-25 07:51:58 +0200 | [diff] [blame] | 81 | #ifndef POSIX_FADV_DONTNEED | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 82 | #define POSIX_FADV_DONTNEED	(0) | 
 | 83 | #define POSIX_FADV_SEQUENTIAL	(0) | 
 | 84 | #define POSIX_FADV_RANDOM	(0) | 
| Shawn Lewis | 4d8947d | 2007-07-25 07:51:58 +0200 | [diff] [blame] | 85 | #endif | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 86 | #endif /* FIO_HAVE_FADVISE */ | 
 | 87 |  | 
 | 88 | #ifndef FIO_HAVE_CPU_AFFINITY | 
| Jens Axboe | e8462bd | 2009-07-06 12:59:04 +0200 | [diff] [blame] | 89 | #define fio_setaffinity(pid, mask)	(0) | 
| Jens Axboe | be4ecfd | 2008-12-08 14:10:52 +0100 | [diff] [blame] | 90 | #define fio_getaffinity(pid, mask)	do { } while (0) | 
 | 91 | #define fio_cpu_clear(mask, cpu)	do { } while (0) | 
| Jens Axboe | 85daf2c | 2009-01-05 09:40:13 +0100 | [diff] [blame] | 92 | #define fio_cpuset_exit(mask)		(-1) | 
| YAMAMOTO Takashi | 7452440 | 2010-05-12 15:06:46 +0200 | [diff] [blame] | 93 | typedef unsigned long os_cpu_mask_t; | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 94 | #endif | 
 | 95 |  | 
 | 96 | #ifndef FIO_HAVE_IOPRIO | 
 | 97 | #define ioprio_set(which, who, prio)	(0) | 
 | 98 | #endif | 
 | 99 |  | 
| Jens Axboe | 2c0ecd2 | 2006-06-08 13:25:41 +0200 | [diff] [blame] | 100 | #ifndef FIO_HAVE_ODIRECT | 
| Jens Axboe | 7d42476 | 2006-06-08 13:26:31 +0200 | [diff] [blame] | 101 | #define OS_O_DIRECT			0 | 
 | 102 | #else | 
 | 103 | #define OS_O_DIRECT			O_DIRECT | 
| Jens Axboe | 2c0ecd2 | 2006-06-08 13:25:41 +0200 | [diff] [blame] | 104 | #endif | 
 | 105 |  | 
| Jens Axboe | 74b025b | 2006-12-19 15:18:14 +0100 | [diff] [blame] | 106 | #ifndef FIO_HAVE_HUGETLB | 
 | 107 | #define SHM_HUGETLB			0 | 
| Jens Axboe | d6dc02f | 2012-11-20 13:39:59 +0100 | [diff] [blame] | 108 | #define MAP_HUGETLB			0 | 
| Shawn Lewis | 4d8947d | 2007-07-25 07:51:58 +0200 | [diff] [blame] | 109 | #ifndef FIO_HUGE_PAGE | 
| Jens Axboe | 74b025b | 2006-12-19 15:18:14 +0100 | [diff] [blame] | 110 | #define FIO_HUGE_PAGE			0 | 
| Shawn Lewis | 4d8947d | 2007-07-25 07:51:58 +0200 | [diff] [blame] | 111 | #endif | 
| Jens Axboe | 74b025b | 2006-12-19 15:18:14 +0100 | [diff] [blame] | 112 | #else | 
| Jens Axboe | cb25df6 | 2007-03-23 08:23:30 +0100 | [diff] [blame] | 113 | #ifndef FIO_HUGE_PAGE | 
| Jens Axboe | ee0e0a7 | 2007-03-19 10:50:47 +0100 | [diff] [blame] | 114 | #define FIO_HUGE_PAGE			4194304 | 
| Jens Axboe | 74b025b | 2006-12-19 15:18:14 +0100 | [diff] [blame] | 115 | #endif | 
| Jens Axboe | cb25df6 | 2007-03-23 08:23:30 +0100 | [diff] [blame] | 116 | #endif | 
| Jens Axboe | 74b025b | 2006-12-19 15:18:14 +0100 | [diff] [blame] | 117 |  | 
| Jens Axboe | 39b9356 | 2012-11-27 08:27:50 +0100 | [diff] [blame^] | 118 | #ifndef FIO_HAVE_MMAP_HUGE | 
 | 119 | #define MAP_HUGETLB			0 | 
 | 120 | #endif | 
 | 121 |  | 
| Jens Axboe | 5921e80 | 2008-05-30 15:02:38 +0200 | [diff] [blame] | 122 | #ifndef FIO_O_NOATIME | 
 | 123 | #define FIO_O_NOATIME			0 | 
 | 124 | #endif | 
 | 125 |  | 
| Jens Axboe | dc873b6 | 2008-06-04 20:13:04 +0200 | [diff] [blame] | 126 | #ifndef OS_RAND_MAX | 
 | 127 | #define OS_RAND_MAX			RAND_MAX | 
 | 128 | #endif | 
 | 129 |  | 
| Bruce Cran | ecc314b | 2011-01-04 10:59:30 +0100 | [diff] [blame] | 130 | #ifdef FIO_HAVE_CLOCK_MONOTONIC | 
 | 131 | #define FIO_TIMER_CLOCK CLOCK_MONOTONIC | 
 | 132 | #else | 
 | 133 | #define FIO_TIMER_CLOCK CLOCK_REALTIME | 
 | 134 | #endif | 
 | 135 |  | 
| Jens Axboe | 07e5b26 | 2007-04-02 14:46:07 +0200 | [diff] [blame] | 136 | #ifndef FIO_HAVE_RAWBIND | 
| Jens Axboe | 8cc7afa | 2007-04-17 09:06:43 +0200 | [diff] [blame] | 137 | #define fio_lookup_raw(dev, majdev, mindev)	1 | 
| Jens Axboe | 07e5b26 | 2007-04-02 14:46:07 +0200 | [diff] [blame] | 138 | #endif | 
 | 139 |  | 
| Jens Axboe | 58483fa | 2011-01-19 11:09:58 -0700 | [diff] [blame] | 140 | #ifndef FIO_PREFERRED_ENGINE | 
 | 141 | #define FIO_PREFERRED_ENGINE	"sync" | 
 | 142 | #endif | 
 | 143 |  | 
| Bruce Cran | b9fd788 | 2012-02-20 17:01:46 +0000 | [diff] [blame] | 144 | #ifndef FIO_OS_PATH_SEPARATOR | 
 | 145 | #define FIO_OS_PATH_SEPARATOR	"/" | 
 | 146 | #endif | 
 | 147 |  | 
| Bruce Cran | 16de1bf | 2012-02-20 17:07:32 +0000 | [diff] [blame] | 148 | #ifndef FIO_PREFERRED_CLOCK_SOURCE | 
 | 149 | #define FIO_PREFERRED_CLOCK_SOURCE	CS_CGETTIME | 
 | 150 | #endif | 
 | 151 |  | 
| Jens Axboe | fca7035 | 2011-07-06 20:12:54 +0200 | [diff] [blame] | 152 | #ifndef FIO_MAX_JOBS | 
 | 153 | #define FIO_MAX_JOBS		2048 | 
 | 154 | #endif | 
 | 155 |  | 
| Jens Axboe | 5ba13ea | 2011-10-04 23:50:28 +0200 | [diff] [blame] | 156 | #ifndef FIO_OS_HAVE_SOCKLEN_T | 
 | 157 | typedef socklen_t fio_socklen_t; | 
 | 158 | #endif | 
 | 159 |  | 
| Saurabh De | 45054cb | 2012-10-09 14:46:24 -0600 | [diff] [blame] | 160 | #ifndef FIO_OS_HAS_CTIME_R | 
 | 161 | #define os_ctime_r(x, y, z)     ctime_r((x), (y)) | 
 | 162 | #endif | 
 | 163 |  | 
| Jens Axboe | 901ebe1 | 2011-10-04 23:31:00 +0200 | [diff] [blame] | 164 | #ifdef FIO_USE_GENERIC_SWAP | 
| Jens Axboe | 9677bec | 2011-10-04 16:02:51 +0200 | [diff] [blame] | 165 | static inline uint16_t fio_swap16(uint16_t val) | 
| Jens Axboe | 232f9b7 | 2011-10-04 14:45:20 +0200 | [diff] [blame] | 166 | { | 
 | 167 | 	return (val << 8) | (val >> 8); | 
 | 168 | } | 
 | 169 |  | 
| Jens Axboe | 901ebe1 | 2011-10-04 23:31:00 +0200 | [diff] [blame] | 170 | static inline uint32_t fio_swap32(uint32_t val) | 
| Jens Axboe | 232f9b7 | 2011-10-04 14:45:20 +0200 | [diff] [blame] | 171 | { | 
 | 172 | 	val = ((val & 0xff00ff00UL) >> 8) | ((val & 0x00ff00ffUL) << 8); | 
 | 173 |  | 
 | 174 | 	return (val >> 16) | (val << 16); | 
 | 175 | } | 
 | 176 |  | 
| Jens Axboe | 901ebe1 | 2011-10-04 23:31:00 +0200 | [diff] [blame] | 177 | static inline uint64_t fio_swap64(uint64_t val) | 
| Jens Axboe | 232f9b7 | 2011-10-04 14:45:20 +0200 | [diff] [blame] | 178 | { | 
 | 179 | 	val = ((val & 0xff00ff00ff00ff00ULL) >> 8) | | 
 | 180 | 	      ((val & 0x00ff00ff00ff00ffULL) << 8); | 
 | 181 | 	val = ((val & 0xffff0000ffff0000ULL) >> 16) | | 
 | 182 | 	      ((val & 0x0000ffff0000ffffULL) << 16); | 
 | 183 |  | 
 | 184 | 	return (val >> 32) | (val << 32); | 
 | 185 | } | 
 | 186 | #endif | 
 | 187 |  | 
| Aaron Carroll | ec5c6b1 | 2012-11-21 10:39:00 +0100 | [diff] [blame] | 188 | #ifndef FIO_HAVE_BYTEORDER_FUNCS | 
| Jens Axboe | 8111092 | 2011-10-05 12:40:49 +0200 | [diff] [blame] | 189 | #ifdef FIO_LITTLE_ENDIAN | 
 | 190 | #define __le16_to_cpu(x)		(x) | 
 | 191 | #define __le32_to_cpu(x)		(x) | 
 | 192 | #define __le64_to_cpu(x)		(x) | 
 | 193 | #define __cpu_to_le16(x)		(x) | 
 | 194 | #define __cpu_to_le32(x)		(x) | 
 | 195 | #define __cpu_to_le64(x)		(x) | 
 | 196 | #else | 
 | 197 | #define __le16_to_cpu(x)		fio_swap16(x) | 
 | 198 | #define __le32_to_cpu(x)		fio_swap32(x) | 
 | 199 | #define __le64_to_cpu(x)		fio_swap64(x) | 
 | 200 | #define __cpu_to_le16(x)		fio_swap16(x) | 
 | 201 | #define __cpu_to_le32(x)		fio_swap32(x) | 
 | 202 | #define __cpu_to_le64(x)		fio_swap64(x) | 
 | 203 | #endif | 
| Aaron Carroll | ec5c6b1 | 2012-11-21 10:39:00 +0100 | [diff] [blame] | 204 | #endif /* FIO_HAVE_BYTEORDER_FUNCS */ | 
| Jens Axboe | 8111092 | 2011-10-05 12:40:49 +0200 | [diff] [blame] | 205 |  | 
 | 206 | #define le16_to_cpu(val) ({			\ | 
 | 207 | 	uint16_t *__val = &(val);		\ | 
 | 208 | 	__le16_to_cpu(*__val);			\ | 
 | 209 | }) | 
 | 210 | #define le32_to_cpu(val) ({			\ | 
 | 211 | 	uint32_t *__val = &(val);		\ | 
 | 212 | 	__le32_to_cpu(*__val);			\ | 
 | 213 | }) | 
 | 214 | #define le64_to_cpu(val) ({			\ | 
 | 215 | 	uint64_t *__val = &(val);		\ | 
 | 216 | 	__le64_to_cpu(*__val);			\ | 
 | 217 | }) | 
 | 218 | #define cpu_to_le16(val) ({			\ | 
 | 219 | 	uint16_t *__val = &(val);		\ | 
 | 220 | 	__cpu_to_le16(*__val);			\ | 
 | 221 | }) | 
 | 222 | #define cpu_to_le32(val) ({			\ | 
 | 223 | 	uint32_t *__val = &(val);		\ | 
 | 224 | 	__cpu_to_le32(*__val);			\ | 
 | 225 | }) | 
 | 226 | #define cpu_to_le64(val) ({			\ | 
 | 227 | 	uint64_t *__val = &(val);		\ | 
 | 228 | 	__cpu_to_le64(*__val);			\ | 
 | 229 | }) | 
 | 230 |  | 
| Jens Axboe | 5e62c22 | 2007-05-22 13:27:30 +0200 | [diff] [blame] | 231 | #ifndef FIO_HAVE_BLKTRACE | 
 | 232 | static inline int is_blktrace(const char *fname) | 
 | 233 | { | 
 | 234 | 	return 0; | 
 | 235 | } | 
| Jens Axboe | 5921e80 | 2008-05-30 15:02:38 +0200 | [diff] [blame] | 236 | struct thread_data; | 
| Jens Axboe | 5e62c22 | 2007-05-22 13:27:30 +0200 | [diff] [blame] | 237 | static inline int load_blktrace(struct thread_data *td, const char *fname) | 
 | 238 | { | 
 | 239 | 	return 1; | 
 | 240 | } | 
 | 241 | #endif | 
 | 242 |  | 
| Jens Axboe | eb7ccf3 | 2009-04-29 09:48:04 +0200 | [diff] [blame] | 243 | #define FIO_DEF_CL_SIZE		128 | 
 | 244 |  | 
 | 245 | static inline int os_cache_line_size(void) | 
 | 246 | { | 
 | 247 | #ifdef FIO_HAVE_CL_SIZE | 
 | 248 | 	int ret = arch_cache_line_size(); | 
 | 249 |  | 
 | 250 | 	if (ret <= 0) | 
 | 251 | 		return FIO_DEF_CL_SIZE; | 
 | 252 |  | 
 | 253 | 	return ret; | 
 | 254 | #else | 
 | 255 | 	return FIO_DEF_CL_SIZE; | 
 | 256 | #endif | 
 | 257 | } | 
 | 258 |  | 
| Jens Axboe | 792d551 | 2009-09-22 17:12:29 +0200 | [diff] [blame] | 259 | #ifdef FIO_USE_GENERIC_BDEV_SIZE | 
| Bruce Cran | ecc314b | 2011-01-04 10:59:30 +0100 | [diff] [blame] | 260 | static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) | 
| Jens Axboe | 792d551 | 2009-09-22 17:12:29 +0200 | [diff] [blame] | 261 | { | 
| Jens Axboe | 3b2e146 | 2009-12-15 08:58:10 +0100 | [diff] [blame] | 262 | 	off_t end; | 
| Jens Axboe | 792d551 | 2009-09-22 17:12:29 +0200 | [diff] [blame] | 263 |  | 
| Jens Axboe | 3b2e146 | 2009-12-15 08:58:10 +0100 | [diff] [blame] | 264 | 	*bytes = 0; | 
 | 265 |  | 
| Bruce Cran | ecc314b | 2011-01-04 10:59:30 +0100 | [diff] [blame] | 266 | 	end = lseek(f->fd, 0, SEEK_END); | 
| Jens Axboe | 792d551 | 2009-09-22 17:12:29 +0200 | [diff] [blame] | 267 | 	if (end < 0) | 
 | 268 | 		return errno; | 
 | 269 |  | 
 | 270 | 	*bytes = end; | 
 | 271 | 	return 0; | 
 | 272 | } | 
 | 273 | #endif | 
 | 274 |  | 
| Jens Axboe | 5353137 | 2009-12-15 10:28:37 +0100 | [diff] [blame] | 275 | #ifdef FIO_USE_GENERIC_RAND | 
 | 276 | typedef unsigned int os_random_state_t; | 
 | 277 |  | 
 | 278 | static inline void os_random_seed(unsigned long seed, os_random_state_t *rs) | 
 | 279 | { | 
 | 280 | 	srand(seed); | 
 | 281 | } | 
 | 282 |  | 
 | 283 | static inline long os_random_long(os_random_state_t *rs) | 
 | 284 | { | 
 | 285 | 	long val; | 
 | 286 |  | 
 | 287 | 	val = rand_r(rs); | 
 | 288 | 	return val; | 
 | 289 | } | 
 | 290 | #endif | 
 | 291 |  | 
| Bruce Cran | 93bcfd2 | 2012-02-20 20:18:19 +0100 | [diff] [blame] | 292 | #ifdef FIO_USE_GENERIC_INIT_RANDOM_STATE | 
 | 293 | extern void td_fill_rand_seeds(struct thread_data *td); | 
 | 294 | /* | 
 | 295 |  * Initialize the various random states we need (random io, block size ranges, | 
 | 296 |  * read/write mix, etc). | 
 | 297 |  */ | 
 | 298 | static inline int init_random_state(struct thread_data *td, unsigned long *rand_seeds, int size) | 
 | 299 | { | 
 | 300 | 	int fd; | 
 | 301 |  | 
 | 302 | 	fd = open("/dev/urandom", O_RDONLY); | 
 | 303 | 	if (fd == -1) { | 
 | 304 | 		return 1; | 
 | 305 | 	} | 
 | 306 |  | 
 | 307 | 	if (read(fd, rand_seeds, size) < size) { | 
 | 308 | 		close(fd); | 
 | 309 | 		return 1; | 
 | 310 | 	} | 
 | 311 |  | 
 | 312 | 	close(fd); | 
 | 313 | 	td_fill_rand_seeds(td); | 
 | 314 | 	return 0; | 
 | 315 | } | 
 | 316 | #endif | 
 | 317 |  | 
| Jens Axboe | 2e3bd4c | 2010-05-17 12:29:57 +0200 | [diff] [blame] | 318 | #ifndef FIO_HAVE_FS_STAT | 
 | 319 | static inline unsigned long long get_fs_size(const char *path) | 
 | 320 | { | 
 | 321 | 	return 0; | 
 | 322 | } | 
 | 323 | #endif | 
 | 324 |  | 
| Jens Axboe | c00a228 | 2011-07-08 20:56:06 +0200 | [diff] [blame] | 325 | #ifndef FIO_HAVE_CPU_ONLINE_SYSCONF | 
 | 326 | static inline unsigned int cpus_online(void) | 
 | 327 | { | 
 | 328 | 	return sysconf(_SC_NPROCESSORS_ONLN); | 
 | 329 | } | 
 | 330 | #endif | 
 | 331 |  | 
| Jens Axboe | 47f767c | 2011-07-12 21:17:49 +0200 | [diff] [blame] | 332 | #ifndef FIO_HAVE_GETTID | 
 | 333 | static inline int gettid(void) | 
 | 334 | { | 
 | 335 | 	return getpid(); | 
 | 336 | } | 
 | 337 | #endif | 
 | 338 |  | 
| Jens Axboe | ebac465 | 2005-12-08 15:25:21 +0100 | [diff] [blame] | 339 | #endif |