#include <errno.h>
#include <sys/ipc.h>
#include <sys/shm.h>
+#include <sys/types.h>
+#include <sys/stat.h>
#include "fio.h"
static void fill_cpu_mask(cpu_set_t cpumask, int cpu)
{
+#ifdef FIO_HAVE_CPU_AFFINITY
unsigned int i;
CPU_ZERO(&cpumask);
if ((1 << i) & cpu)
CPU_SET(i, &cpumask);
}
+#endif
}
static unsigned long get_mult(char c)
{
memset(&def_thread, 0, sizeof(def_thread));
- if (sched_getaffinity(getpid(), sizeof(cpu_set_t), &def_thread.cpumask) == -1) {
+ if (fio_getaffinity(getpid(), &def_thread.cpumask) == -1) {
perror("sched_getaffinity");
return 1;
}
def_thread.numjobs = DEF_NUMJOBS;
def_thread.use_thread = DEF_USE_THREAD;
def_thread.use_mmap = DEF_USE_MMAP;
+#ifdef FIO_HAVE_DISK_UTIL
+ def_thread.do_disk_util = 1;
+#endif
return 0;
}
#include <time.h>
#include <math.h>
#include <assert.h>
-#include <pthread.h>
#include <dirent.h>
#include <libgen.h>
#include <sys/types.h>
rate_throttle(td, usec, io_u->buflen);
if (check_min_rate(td, &e)) {
- td_verror(td, ENODATA);
+ td_verror(td, ENOMEM);
break;
}
rate_throttle(td, usec, bytes_done);
if (check_min_rate(td, &e)) {
- td_verror(td, ENODATA);
+ td_verror(td, ENOMEM);
break;
}
dev_t dev;
char *p, *dir;
+ if (!td->do_disk_util)
+ return;
+
if (!stat(td->file_name, &st)) {
if (S_ISBLK(st.st_mode))
dev = st.st_rdev;
#include <sched.h>
#include <limits.h>
+#include <pthread.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <semaphore.h>
unsigned long sys_time;
unsigned long ctx;
+ unsigned int do_disk_util;
+
struct list_head io_hist_list;
};
#define FIO_HAVE_POSIXAIO
#undef FIO_HAVE_FADVISE
#undef FIO_HAVE_CPU_AFFINITY
+#undef FIO_HAVE_DISK_UTIL
-#define OS_MMAP_ANON (MMAP_ANON)
+#define OS_MAP_ANON (MAP_ANON)
#endif
#define FIO_HAVE_POSIXAIO
#define FIO_HAVE_FADVISE
#define FIO_HAVE_CPU_AFFINITY
+#define FIO_HAVE_DISK_UTIL
#define OS_MAP_ANON (MAP_ANONYMOUS)
#define fio_setaffinity(td) \
sched_setaffinity((td)->pid, sizeof((td)->cpumask), &(td)->cpumask)
+#define fio_getaffinity(pid, ptr) \
+ sched_getaffinity((pid), sizeof(cpu_set_t), (ptr))
#endif
#if defined(__linux__)
#include "os-linux.h"
+#elif defined(__FreeBSD__)
+#include "os-freebsd.h"
#else
#error "unsupported os"
#endif
#endif
#ifndef FIO_HAVE_FADVISE
-static int fadvise(int fd, loff_t offset, size_t len, int advice)
-{
- return 0;
-}
+#define fadvise(fd, off, len, advice) (0)
#define POSIX_FADV_DONTNEED (0)
#define POSIX_FADV_SEQUENTIAL (0)
#endif /* FIO_HAVE_FADVISE */
#ifndef FIO_HAVE_CPU_AFFINITY
-#define fio_setaffinity(td) do { } while (0)
+#define fio_setaffinity(td) (0)
+#define fio_getaffinity(pid, mask) (0)
#endif
struct thread_data;