+#include <errno.h>
+#include <malloc.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/pset.h>
+#include <sys/mman.h>
+#include <sys/dkio.h>
+#include <sys/byteorder.h>
+#include <sys/statvfs.h>
+#include <pthread.h>
+
+#include "../file.h"
+#include "../lib/types.h"
+
+#define FIO_HAVE_CPU_AFFINITY
+#define FIO_HAVE_CHARDEV_SIZE
+#define FIO_USE_GENERIC_BDEV_SIZE
+#define FIO_HAVE_FS_STAT
+#define FIO_USE_GENERIC_INIT_RANDOM_STATE
+#define FIO_HAVE_GETTID
+
+#define OS_MAP_ANON MAP_ANON
+#define OS_RAND_MAX 2147483648UL
+
+#define fio_swap16(x) BSWAP_16(x)
+#define fio_swap32(x) BSWAP_32(x)
+#define fio_swap64(x) BSWAP_64(x)
+
+struct solaris_rand_seed {
+ unsigned short r[3];
+};
+
+#ifndef POSIX_MADV_SEQUENTIAL
+#define posix_madvise madvise
+#define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
+#define POSIX_MADV_DONTNEED MADV_DONTNEED
+#define POSIX_MADV_RANDOM MADV_RANDOM
+#endif
+
+#define os_ctime_r(x, y, z) ctime_r((x), (y), (z))
+#define FIO_OS_HAS_CTIME_R
+
+#ifdef CONFIG_PTHREAD_GETAFFINITY
+#define FIO_HAVE_GET_THREAD_AFFINITY
+#define fio_get_thread_affinity(mask) \
+ pthread_getaffinity_np(pthread_self(), sizeof(mask), &(mask))
+#endif
+
+typedef psetid_t os_cpu_mask_t;
+
+static inline int chardev_size(struct fio_file *f, unsigned long long *bytes)