blob: 10e796fbcbe3313d1faee845bc26d751645aa011 [file] [log] [blame]
Jens Axboeebac4652005-12-08 15:25:21 +01001#ifndef FIO_OS_H
2#define FIO_OS_H
3
4#if defined(__linux__)
5#include "os-linux.h"
6#elif defined(__FreeBSD__)
7#include "os-freebsd.h"
Jens Axboe2c0ecd22006-06-08 13:25:41 +02008#elif defined(__sun__)
9#include "os-solaris.h"
Jens Axboeebac4652005-12-08 15:25:21 +010010#else
11#error "unsupported os"
12#endif
13
14#ifdef FIO_HAVE_LIBAIO
15#include <libaio.h>
16#endif
17
18#ifdef FIO_HAVE_POSIXAIO
19#include <aio.h>
20#endif
21
22#ifdef FIO_HAVE_SGIO
23#include <linux/fs.h>
24#include <scsi/sg.h>
25#endif
26
Jens Axboe5921e802008-05-30 15:02:38 +020027#ifndef FIO_HAVE_STRSEP
Jens Axboe00fb3c82008-05-30 22:17:45 +020028#include "../lib/strsep.h"
Jens Axboe5921e802008-05-30 15:02:38 +020029#endif
30
Jens Axboeebac4652005-12-08 15:25:21 +010031#ifndef FIO_HAVE_FADVISE
32#define fadvise(fd, off, len, advice) (0)
33
Shawn Lewis4d8947d2007-07-25 07:51:58 +020034#ifndef POSIX_FADV_DONTNEED
Jens Axboeebac4652005-12-08 15:25:21 +010035#define POSIX_FADV_DONTNEED (0)
36#define POSIX_FADV_SEQUENTIAL (0)
37#define POSIX_FADV_RANDOM (0)
Shawn Lewis4d8947d2007-07-25 07:51:58 +020038#endif
Jens Axboeebac4652005-12-08 15:25:21 +010039#endif /* FIO_HAVE_FADVISE */
40
41#ifndef FIO_HAVE_CPU_AFFINITY
Jens Axboee8462bd2009-07-06 12:59:04 +020042#define fio_setaffinity(pid, mask) (0)
Jens Axboebe4ecfd2008-12-08 14:10:52 +010043#define fio_getaffinity(pid, mask) do { } while (0)
44#define fio_cpu_clear(mask, cpu) do { } while (0)
Jens Axboe85daf2c2009-01-05 09:40:13 +010045#define fio_cpuset_exit(mask) (-1)
Jens Axboeebac4652005-12-08 15:25:21 +010046#endif
47
48#ifndef FIO_HAVE_IOPRIO
49#define ioprio_set(which, who, prio) (0)
50#endif
51
Jens Axboe2c0ecd22006-06-08 13:25:41 +020052#ifndef FIO_HAVE_ODIRECT
Jens Axboe7d424762006-06-08 13:26:31 +020053#define OS_O_DIRECT 0
54#else
55#define OS_O_DIRECT O_DIRECT
Jens Axboe2c0ecd22006-06-08 13:25:41 +020056#endif
57
Jens Axboe74b025b2006-12-19 15:18:14 +010058#ifndef FIO_HAVE_HUGETLB
59#define SHM_HUGETLB 0
Shawn Lewis4d8947d2007-07-25 07:51:58 +020060#ifndef FIO_HUGE_PAGE
Jens Axboe74b025b2006-12-19 15:18:14 +010061#define FIO_HUGE_PAGE 0
Shawn Lewis4d8947d2007-07-25 07:51:58 +020062#endif
Jens Axboe74b025b2006-12-19 15:18:14 +010063#else
Jens Axboecb25df62007-03-23 08:23:30 +010064#ifndef FIO_HUGE_PAGE
Jens Axboeee0e0a72007-03-19 10:50:47 +010065#define FIO_HUGE_PAGE 4194304
Jens Axboe74b025b2006-12-19 15:18:14 +010066#endif
Jens Axboecb25df62007-03-23 08:23:30 +010067#endif
Jens Axboe74b025b2006-12-19 15:18:14 +010068
Jens Axboe5921e802008-05-30 15:02:38 +020069#ifndef FIO_O_NOATIME
70#define FIO_O_NOATIME 0
71#endif
72
Jens Axboedc873b62008-06-04 20:13:04 +020073#ifndef OS_RAND_MAX
74#define OS_RAND_MAX RAND_MAX
75#endif
76
Jens Axboe07e5b262007-04-02 14:46:07 +020077#ifndef FIO_HAVE_RAWBIND
Jens Axboe8cc7afa2007-04-17 09:06:43 +020078#define fio_lookup_raw(dev, majdev, mindev) 1
Jens Axboe07e5b262007-04-02 14:46:07 +020079#endif
80
Jens Axboe5e62c222007-05-22 13:27:30 +020081#ifndef FIO_HAVE_BLKTRACE
82static inline int is_blktrace(const char *fname)
83{
84 return 0;
85}
Jens Axboe5921e802008-05-30 15:02:38 +020086struct thread_data;
Jens Axboe5e62c222007-05-22 13:27:30 +020087static inline int load_blktrace(struct thread_data *td, const char *fname)
88{
89 return 1;
90}
91#endif
92
Jens Axboeeb7ccf32009-04-29 09:48:04 +020093#define FIO_DEF_CL_SIZE 128
94
95static inline int os_cache_line_size(void)
96{
97#ifdef FIO_HAVE_CL_SIZE
98 int ret = arch_cache_line_size();
99
100 if (ret <= 0)
101 return FIO_DEF_CL_SIZE;
102
103 return ret;
104#else
105 return FIO_DEF_CL_SIZE;
106#endif
107}
108
Jens Axboeebac4652005-12-08 15:25:21 +0100109#endif