[PATCH] fio: more portability fixes
authorJens Axboe <axboe@suse.de>
Mon, 5 Dec 2005 18:52:56 +0000 (19:52 +0100)
committerJens Axboe <axboe@suse.de>
Mon, 5 Dec 2005 18:52:56 +0000 (19:52 +0100)
fio-ini.c
fio.c
fio.h
os-linux.h
os.h

index 36ca1adde3656ebce8d17d4541ab65b812d96ed9..ecb9aa70c4381fd966c0fc6c36fca844117ad33b 100644 (file)
--- a/fio-ini.c
+++ b/fio-ini.c
@@ -613,6 +613,10 @@ int parse_jobs_ini(char *file)
                                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;
diff --git a/fio.c b/fio.c
index d7eaa31847951df20543aa0f6f37a737a07bb51a..4e32dce8291563521c03388e6ddeb32cb2544b85 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -1175,7 +1175,7 @@ static int init_io_u(struct thread_data *td)
                        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");
@@ -1731,7 +1731,7 @@ static void *thread_main(void *data)
        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;
        }
diff --git a/fio.h b/fio.h
index 930ca2ea82d95a7e44c16c10b389956ae4a7d2b3..c8bc18e9a5dd5125b4b5db8220ca50ba30b5da27 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -132,7 +132,7 @@ struct thread_data {
        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;
index c7c0aa1024c3e0a113b1b4ef559940efaffeb095..06c32a55bdc5af46e1eb095571e4ae7e5bf735ed 100644 (file)
@@ -1,16 +1,22 @@
 #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
diff --git a/os.h b/os.h
index 069f9c819580f8faa898712c3d1465137ef0206f..14065cd2de7a11dc28f646416e47e14324f89020 100644 (file)
--- a/os.h
+++ b/os.h
@@ -7,6 +7,14 @@
 #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)
 {
@@ -18,6 +26,10 @@ 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 *);