X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=os%2Fos-mac.h;h=7446a43d47e8c842a72b5b4e2e4469184ce4a974;hb=8eb016d3727522d580d4dd463aefef58b7ecdb00;hp=1a0a8875fc090742212012356393ee5baacb283d;hpb=7ed4d7abf0d7720d532d9680ebf69745d9270a5e;p=fio.git diff --git a/os/os-mac.h b/os/os-mac.h index 1a0a8875..7446a43d 100644 --- a/os/os-mac.h +++ b/os/os-mac.h @@ -2,6 +2,8 @@ #define FIO_OS_APPLE_H #include +#include +#include #include #include #include @@ -19,11 +21,16 @@ #define FIO_HAVE_POSIXAIO #define FIO_HAVE_CLOCK_MONOTONIC -#define FIO_USE_GENERIC_BDEV_SIZE #define FIO_USE_GENERIC_RAND #define OS_MAP_ANON MAP_ANON +/* + * OSX has a pitifully small shared memory segment by default, + * so default to a lower number of max jobs supported + */ +#define FIO_MAX_JOBS 128 + typedef off_t off64_t; /* OS X as of 10.6 doesn't have the timer_* functions. @@ -107,6 +114,25 @@ static inline int timer_delete(timer_t timer) return 0; } +#define FIO_OS_DIRECTIO +static inline int fio_set_odirect(int fd) +{ + if (fcntl(fd, F_NOCACHE, 1) == -1) + return errno; + return 0; +} + +static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) +{ + uint64_t temp = 1; + if (ioctl(f->fd, DKIOCGETBLOCKCOUNT, bytes) == -1) + return errno; + if (ioctl(f->fd, DKIOCGETBLOCKSIZE, &temp) == -1) + return errno; + (*bytes) *= temp; + return 0; +} + static inline int blockdev_invalidate_cache(struct fio_file *f) { return EINVAL;