X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=os%2Fos-mac.h;h=2852ac678857cd2ed7225f9d5d73f1d0d54ca2f7;hb=7064f8942a3b8070acf60b8e5fabc16f8221ae40;hp=0903a6fec5c4cd508ff5fefeca69a7e0b9652063;hpb=25f8227d25a77d3bc41a2044d2e662e635fa32cd;p=fio.git diff --git a/os/os-mac.h b/os/os-mac.h index 0903a6fe..2852ac67 100644 --- a/os/os-mac.h +++ b/os/os-mac.h @@ -16,10 +16,10 @@ #include "../file.h" -#define FIO_USE_GENERIC_RAND #define FIO_USE_GENERIC_INIT_RANDOM_STATE #define FIO_HAVE_GETTID #define FIO_HAVE_CHARDEV_SIZE +#define FIO_HAVE_NATIVE_FALLOCATE #define OS_MAP_ANON MAP_ANON @@ -33,16 +33,14 @@ */ #define FIO_MAX_JOBS 128 -typedef off_t off64_t; - #ifndef CONFIG_CLOCKID_T typedef unsigned int clockid_t; #endif #define FIO_OS_DIRECTIO -static inline int fio_set_odirect(int fd) +static inline int fio_set_odirect(struct fio_file *f) { - if (fcntl(fd, F_NOCACHE, 1) == -1) + if (fcntl(f->fd, F_NOCACHE, 1) == -1) return errno; return 0; } @@ -77,7 +75,7 @@ static inline int chardev_size(struct fio_file *f, unsigned long long *bytes) static inline int blockdev_invalidate_cache(struct fio_file *f) { - return EINVAL; + return ENOTSUP; } static inline unsigned long long os_phys_mem(void) @@ -90,15 +88,22 @@ static inline unsigned long long os_phys_mem(void) return mem; } +#ifndef CONFIG_HAVE_GETTID static inline int gettid(void) { return mach_thread_self(); } +#endif -/* - * For some reason, there's no header definition for fdatasync(), even - * if it exists. - */ -extern int fdatasync(int fd); +static inline bool fio_fallocate(struct fio_file *f, uint64_t offset, uint64_t len) +{ + fstore_t store = {F_ALLOCATEALL, F_PEOFPOSMODE, offset, len}; + if (fcntl(f->fd, F_PREALLOCATE, &store) != -1) { + if (ftruncate(f->fd, len) == 0) + return true; + } + + return false; +} #endif