continue;
}
if (!check_int(p, "cpumask", &cpu)) {
+#ifndef FIO_HAVE_CPU_AFFINITY
+ fprintf(stderr, "cpu affinity not available\n");
+ return 1;
+#endif
fill_cpu_mask(td->cpumask, cpu);
fgetpos(f, &off);
continue;
return 1;
}
} else if (td->mem_type == MEM_MMAP) {
- td->orig_buffer = mmap(NULL, td->orig_buffer_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+ td->orig_buffer = mmap(NULL, td->orig_buffer_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | OS_MAP_ANON, 0, 0);
if (td->orig_buffer == MAP_FAILED) {
td_verror(td, errno);
perror("mmap");
if (init_io_u(td))
goto err;
- if (sched_setaffinity(td->pid, sizeof(td->cpumask), &td->cpumask) == -1) {
+ if (fio_setaffinity(td) == -1) {
td_verror(td, errno);
goto err;
}
unsigned int numjobs;
unsigned int use_thread;
unsigned int use_mmap;
- cpu_set_t cpumask;
+ os_cpu_mask_t cpumask;
struct drand48_data bsrange_state;
struct drand48_data verify_state;
#ifndef FIO_OS_LINUX_H
#define FIO_OS_LINUX_H
-#include <libaio.h>
-#include <aio.h>
-
#define FIO_HAVE_LIBAIO
#define FIO_HAVE_POSIXAIO
#define FIO_HAVE_FADVISE
+#define FIO_HAVE_CPU_AFFINITY
+
+#define OS_MAP_ANON (MAP_ANONYMOUS)
+
+typedef cpu_set_t os_cpu_mask_t;
/*
* we want fadvise64 really, but it's so tangled... later
*/
-#define fadvise(fd, off, len, advice) posix_fadvise((fd), (off_t)(off), (len), (advice))
+#define fadvise(fd, off, len, advice) \
+ posix_fadvise((fd), (off_t)(off), (len), (advice))
+
+#define fio_setaffinity(td) \
+ sched_setaffinity((td)->pid, sizeof((td)->cpumask), &(td)->cpumask)
#endif
#error "unsupported os"
#endif
+#ifdef FIO_HAVE_LIBAIO
+#include <libaio.h>
+#endif
+
+#ifdef FIO_HAVE_POSIXAIO
+#include <aio.h>
+#endif
+
#ifndef FIO_HAVE_FADVISE
static int fadvise(int fd, loff_t offset, size_t len, int advice)
{
#define POSIX_FADV_RANDOM (0)
#endif /* FIO_HAVE_FADVISE */
+#ifndef FIO_HAVE_CPU_AFFINITY
+#define fio_setaffinity(td) do { } while (0)
+#endif
+
struct thread_data;
extern int fio_libaio_init(struct thread_data *);
extern void fio_libaio_cleanup(struct thread_data *);